2014-10-28 56 views
0

使用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/> 

回答

0

其實這是很容易解決。下面現在更新對象,只是部分改變是:

而不是使用VAR profileSave = Parse.User.current();

我用

var profileSave = Parse.User.current(); 

這是非常合情合理的,現在,一些有用的背景知識,也可以在這裏找到 Update user object in parse.com

0

它看起來像你需要成功函數中再次調用profileSave.save(),但這次沒有爭論。

+0

所以你的意思\t profileSave.save(空,{ \t \t成功:函數(profileSav e){ profileSave.save(); }, 錯誤:函數(profileSave,error){ //失敗 }?如果是的話,我仍然會得到同樣的問題。 – Dano007 2014-10-28 17:31:39

+0

究竟是什麼問題?數據庫沒有得到更新?或者服務器根本沒有收到任何東西? – 2014-10-28 17:38:58

+0

數據庫未更新。相反,每次按下「保存」按鈕時都會創建新記錄。它應該只更新當前用戶的詳細信息,即如果我更改了我的名字。我已經擴展了代碼,所以你可以看到完整的圖片 – Dano007 2014-10-28 17:41:31

相關問題