使用kiiObject保存用户数据

use kiiObject to save user data

本文关键字:用户数 数据 用户 保存 kiiObject 使用      更新时间:2023-09-26

在我的应用程序中,每个KiiUser都有一个数据哈希表。但我在使用KiiObject保存数据和下次获取数据时遇到了一些问题。我想在用户注册时创建一个具有特定URI的KiiObject,这样每次他登录时我都可以用导入它

KiiObject.objectWithURI(<URI>)

或者,如何使用objectWithJSON()。如果可以避免的话,我不想使用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
...]

使用KiiUser的自定义字段怎么样?

在本页中,它被描述为"操纵自定义字段"。

http://documentation.kii.com/en/guides/javascript/managing-users/user-attributes/

查看这些链接了解API的详细信息:

  • http://documentation.kii.com/references/js/storage/latest/symbols/KiiUser.html#set
  • http://documentation.kii.com/references/js/storage/latest/symbols/KiiUser.html#get