使用Parse.com和JavaScript SDK。如何更新parse.com中的用戶對象而不是創建新的記錄對象?
下面的代碼將數據保存爲解析中的新用戶對象。但我希望它實際更新當前登錄的用戶,而不是創建新的用戶對象。
我已閱讀說明https://www.parse.com/docs/js_guide#objects-updating但我仍然不確定我錯過了什麼。我有一種不好的感覺,這可能是簡單的事情?
<div class="container">
<!--Data is stored in these divs but not they are not displayed to the user!-->
<div id="div_uname" style="display:none;"></div>
<div id="div_email" style="display:none;"></div>
<div id="div_gender" style="display:none;"></div>
<div id="div_password" style="display:none;"></div>
<div id="profile_pic"></div>
<div id="profile_pic_url"></div>
</div>
<!--This is what the user sees. The id calls JS that enables the input field to be edited!-->
<!--Displays user profile information on the page!-->
<div class="container">
<h4>General Features</h4>
<ul>
<li>
<input type="text" class="div_uname" id="username" value="" />
</li>
<li>
<input type="text" class="div_email" id="email" value="" />
</li>
<li>
<input type="text" class="div_gender" id="gender" value="" />
</li>
<li>
<input type="password" class="div_password" id="password" value="" />
</li>
<li>
<input type="file" class="div_profile_pic_url" id="profile_pic_url" value="" />
</li>
<li>
<button class="button button-blue" id="save">Save Name</button>
</li>
</ul>
</div>
<!--Footer stuff-->
<div class="container">
<div class="footer-socials">
<a href="#" class="facebook-footer"></a>
<a href="#" class="goup-footer"></a>
<a href="#" class="twitter-footer"></a>
</div>
<p class="copyright uppercase center-text no-bottom">Copyright 2014
<br>All rights reserved</p>
</div>
<div style="height:350px"></div>
</div>
<!--This script displays the user profile data on the page and allows the user to update the details -->
<script type="text/javascript">
Parse.initialize("xxx", "xxx");
// Makes sure the current user is selected//
// Pulls the user data from parse and stores in variables//
var user = Parse.User.current();
user.fetch().then(function(fetchedUser) {
var username = fetchedUser.getUsername();
var email = fetchedUser.getEmail();
var password = user.get("password");
var gender = user.get("gender");
var imgPaht = user.get("pic");
var profile_pic_url = user.get("pic");
// Outputs the data to the users view//
// Adds the contents of the variables into the html divs//
document.getElementById("div_uname").innerHTML = username;
$(".div_uname")
.val($("#div_uname").text())
document.getElementById("div_email").innerHTML = email;
$(".div_email")
.val($("#div_email").text())
document.getElementById("div_gender").innerHTML = gender;
$(".div_gender")
.val($("#div_gender").text())
document.getElementById("div_password").innerHTML = password;
$(".div_password")
.val($("#div_password").text())
$('<img src="' + imgPaht + '">').load(function() {
$(this).width(400).height(400).appendTo('#profile_pic');
})
}, function(error) {
});
// Saves the users profile information
$('#save').click(function (e) {
ProfileSave();
});
///
function ProfileSave() {
var User = Parse.Object.extend("_User");
var profileSave = new User();
var saveusername = $('#username').val();
var saveemail = $('#email').val();
var savegender = $('#gender').val();
var savepassword = $('#password').val();
profileSave.set("username", saveusername);
profileSave.set("email", saveemail);
profileSave.set("gender", savegender);
profileSave.set("password", savepassword);
profileSave.save(null, {
success: function(profileSave) {
profileSave.save()
},
error: function(profileSave, error) {
// Fail
}
});
}
<script/>
所以你的意思\t profileSave.save(空,{ \t \t成功:函數(profileSav e){ profileSave.save(); }, 錯誤:函數(profileSave,error){ //失敗 }?如果是的話,我仍然會得到同樣的問題。 – Dano007 2014-10-28 17:31:39
究竟是什麼問題?數據庫沒有得到更新?或者服務器根本沒有收到任何東西? – 2014-10-28 17:38:58
數據庫未更新。相反,每次按下「保存」按鈕時都會創建新記錄。它應該只更新當前用戶的詳細信息,即如果我更改了我的名字。我已經擴展了代碼,所以你可以看到完整的圖片 – Dano007 2014-10-28 17:41:31