2013-08-06 50 views
1

在我的應用程序中,每個KiiUser都有一個數據散列表。但我有一些問題,使用KiiObject來保存數據並在下次使用。 我想,當用戶進行註冊,他每次登錄我能使用kiiObject保存用戶數據

KiiObject.objectWithURI(<URI>) 

另外,導入如何使用objectWithJSON()時創建具有特定URI的KiiObject。 如果我可以避免,我不想使用kiiQuery,因爲每個用戶只有一個對象。

任何人都可以給我一個代碼示例:如何在用戶註冊時創建此Kiiobject,以及如何在每次登錄時編輯它;或每次他編輯並保存。 這是我的一些當前的代碼,但我不總是得到保存的數據備份(保存的哈希表「數據」的對象上未定義)

function performRegistration() { 
    try { 
     var user = KiiUser.userWithUsername(<username>, <password>); 
     user.register({ 
      success: function(Auser) { 
       var bucket = Auser.bucketWithName("data"); 
       data = bucket.createObject(); 
       data.set("data", {}); 
       data.saveAllFields({ 
          success: function(theObject) { 
           console.log("Object saved!"); 
           theObject.refresh({success:function(obj){ 
            data=obj; 
            [.... 
            ...Some Code here to edit the... 
            ...data object and save it.... 
             ...] 
            Kii.logger("User registered: " + Auser); 
           }}); 
          }, 
          failure: function(theObject, errorString) { 
           console.log("Error saving object: " + errorString); 
          } 
         }); 

      }, 
      failure: function(theUser, anErrorString) { 
       alert("Unable to register: " + anErrorString); 
       Kii.logger("Unable to register user: " + anErrorString); 
      } 
     }); 
    } catch (e) { 
     alert("Unable to register: " + e.message); 
     Kii.logger("Unable to register user: " + e.message); 
    } 
} 

// the user clicked the 'sign in' button 
function performLogin() { 
    KiiUser.authenticate(<username>, <password>, { 
     success: function(Auser) { 
      user = Auser; 
      var bucket = user.bucketWithName("data"); // a KiiBucket 
      var query = KiiQuery.queryWithClause(); 
      var queryCallbacks = { 
      success: function(queryPerformed, r, nextQuery) { 
       console.log(r.constructor.name,r); 
       r[0].refresh({success:function(obj){ 
        data=obj; 
        if(data.get("data")==undefined){ 
         data.set("data",{}); 
        } 
        data.save({success:function(Sobj){ 
         data=Sobj; 
         [... 
         ...some data object manipilation then save it 
         ...] 
        }}); 

       }}); 
      }, 
      failure: function(queryPerformed, anErrorString) { 
      } 
      }; 

      bucket.executeQuery(query, queryCallbacks); 
     }, 
     // callback for failed registration 
     failure: function(theUser, anErrorString) { 
      alert("Unable to register: " + anErrorString); 
      Kii.logger("Unable to register user: " + anErrorString); 
     } 
    }); 

}; 
Kii.initializeWithSite(<...>, <...>, KiiSite.US); 
[... 
other code 
...] 

回答