我相信这个问题的答案很简单,但我无法弄清楚......
这是我在云代码中的代码:
Parse.Cloud.define("acceptFriendRequest", function(request, response) {
Parse.Cloud.useMasterKey();
var query = new Parse.Query("_User");
var userFrom = new Parse.User();
userFrom = query.get(request.params.userFrom);
console.log(userFrom);
var userTo = new String();
userTo = request.params.userTo;
userFrom.addUnique("friend", userTo);
user.save().then(function (user) {
response.success();
}, function (error) {
console.log(error);
response.error(error);
});
response.success();
});
这是我在iOS中的代码:
[PFCloud callFunctionInBackground:@"acceptFriendRequest"
withParameters:@{@"userFrom":userFrom.objectId,
@"userTo":[PFUser currentUser].objectId}
block:^(id object, NSError *error) {
if (error) {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
但是我收到错误:
error = "TypeError: Object [object Object] has no method 'addUnique'n at main.js:33:12";
我也只尝试了普通的userFrom.add()
方法,但它带来了同样的错误!
谁能帮忙?
您需要等待 get 返回对象。 我相信get()
本身只是返回 null。
query.get(request.params.userFrom, {
success: function(object) {
userFrom = object;
userFrom.addUnique("friend", userTo);
user.save();
},
error: function(object, error) {
// something went wrong
}
});
这些 sdk 方法返回 promise,指针列必须填充对象,而不是您必须传递的 id。 所以你需要得到两个用户,并像这样链接异步调用......
Parse.Cloud.useMasterKey();
var userFrom; // so it's available in the second 'then' closure
Parse.Query(Parse.User).get(request.params.userFrom).then(function(user) {
console.log(user);
userFrom = user;
return Parse.Query(Parse.User).get(request.params.userTo);
}).then(function(userTo) {
userFrom.addUnique("friend", userTo);
return userFrom.save();
}).then(function (user) {
response.success(user);
}, function (error) {
console.log(error);
response.error(error);
});