您的函数在查询完成前运行response.success(),从而取消它。试试...
Parse.Cloud.beforeSave("UserRewards", function(request, response) {
var relation = request.object.relation("user");
relation.query().find({
success: function(list) {
console.log("looked up relation");
if (list.length > 0) {
var pUser = list[0];
request.object.set("pUser", pUser);
console.log("updated pUser");
}
response.success();
},
error: function(error) {
console.error("unable to lookup relation");
response.error(error);
}
});
});
或者,看看容易在与承诺...
Parse.Cloud.beforeSave("UserRewards", function(request, response) {
var relation = request.object.relation("user");
relation.query().find().then(function(list) {
console.log("looked up relation");
if (list.length > 0) {
var pUser = list[0];
request.object.set("pUser", pUser);
console.log("updated pUser");
}
response.success();
}, function(error) {
console.error("unable to lookup relation");
response.error(error);
});
});
编辑我想我明白了后续问题的要求,以同步与关系属性的指针属性,假设在保存之前只设置了其中的一个。这可以通过检测关系为空来完成。如果是的话,再做一个异步步骤来获取指针...
Parse.Cloud.beforeSave("UserRewards", function(request, response) {
var relation = request.object.relation("user");
relation.query().find().then(function(list) {
console.log("looked up relation");
if (list.length > 0) {
var pUser = list[0];
request.object.set("pUser", pUser);
console.log("updated pUser");
return Parse.Promise.as(); // we're done, this will pass nothing to the next step
} else { // the relation is empty, so the user pointer must be set
var pointer = request.object.get("pUser");
return pointer.fetch(); // this will pass the pUser to the next step
}
}).then(function(pUser) {
if (pUser) {
// must have found an empty relation in the last step. add the user pointer to it
request.object.relation.add(pUser);
}
response.success();
}, function(error) {
console.error("unable to lookup relation");
response.error(error);
});
});
(注意代码未经测试)。
嗨丹,谢谢你的回答。那就是诀窍。我有一个后续问题。如果我想检查关系是否已设置,然后将指针设置为未设置,该怎么办?并设置关系,如果没有设置,但指针设置?随意修改上面的答案。承诺是好的。 – amit 2015-01-27 21:48:20
@amit - 给了我最好的拍摄。 – danh 2015-01-27 22:31:54
这样做的工作,如果关系是零? – amit 2015-01-27 23:46:52