当我有用户的对象 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 中查询时,它是异步完成的,因此您无法立即返回用户。相反,您需要返回 promise ,然后在调用 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);
});
看看this document on promise chaining有关 promise 的更多信息:
关于javascript - Parse.com/Javascript - 将用户 objectid 字符串保存为用户指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27699368/