Parse.com / Javascript - 将用户对象ID字符串保存为用户指针

Parse.com / Javascript - Save users objectid string as user pointer

本文关键字:用户 字符串 ID 保存 指针 对象 Parse Javascript com      更新时间:2023-09-26

当我拥有用户的对象 ID 时,如何保存指向对象的用户指针。

我可以将对象保存到 Parse 中的类中,但受让人在 Parse 中始终是"未定义"的。

例如,我已经检索了用户对象,并可以通过以下方式获取用户名/对象 ID 等:

function getUserFromUsername(username) {
Parse.initialize("...", "...");
console.log('The username passed in is: ' + username);
var User = Parse.Object.extend("_User");
var query = new Parse.Query(User);
query.equalTo("username", username);
query.first({
     success : function(result) {
        // Do something with the returned Parse.Object values
            var userPointer = new Parse.User();
            userPointer = result;
            console.log(userPointer.get('username')); // this returns the correct username
            return userPointer;
    },
    error : function(error) {
        alert("Error: " + error.code + " " + error.message);
    }
});
}

这是从下面的保存任务函数调用的:(注意,我已经记录了所有相关字段,它们按预期返回。

function saveNewTask(clientName, taskTitle, taskDue, assigneeArray) {
Parse.initialize("...", "...");
var x;
for (x in assigneeArray) {
    var Task = Parse.Object.extend("Tasks");
    var task = new Task();
    task.set("title", taskTitle);
    task.set("date", taskDue);
    var thisAssignee = GetUserFromUsername(assigneeArray[x]);
    task.set('assignee', thisAssignee);
    task.save(null, {
        success : function(task) {
            // Execute any logic that should take place after the object is saved.
            console.log('New object created with objectId: ' + task.id);
        },
        error : function(gameScore, error) {
            // Execute any logic that should take place if the save fails.
            // error is a Parse.Error with an error code and message.
            console.log('Failed to create new object, with error code: ' + error.message);
        }
    });
}

}

因此,您应该保存指向任务的用户的指针。

var Task = Parse.Object.extend("Tasks");
var task = new Task();
task.set("user", user);
task.set("title", "taskTitle");
task.set("date", taskDue);
task.save(null, {
    success : function(task) {
        // Execute any logic that should take place after the object is saved.
        console.log('New object created with objectId: ' + task.id);
    },
    error : function(gameScore, error) {
        // Execute any logic that should take place if the save fails.
        // error is a Parse.Error with an error code and message.
        console.log('Failed to create new object, with error code: ' + error.message);
    }
});
默认情况下,在

获取对象时,不会读取相关的 Parse.Objects。这些对象的值在像这样被获取之前无法检索:

var user = task.get("user");
user.fetch({
  success: function(user) {
       //fetch user is here
  }
});

这里对此进行了解释:https://parse.com/docs/js_guide#objects-pointers

脚本的问题在于,当您在 Parse 中查询时,它是异步完成的,因此您无法立即返回用户。相反,您需要返回承诺,然后在调用 getUserFromUsername 时处理它:

function getUserFromUsername(username) {
    var User = Parse.Object.extend("_User");
    var query = new Parse.Query(User);
    query.equalTo("username", username);
    return query.first();
}
getUserFromUsername('testUsername').then(function(result) {
    //use User here
}, function(error) {
    alert("Error: " + error.code + " " + error.message);
});

查看此有关承诺链接的文档,了解有关承诺的更多信息:

相关文章: