为什么这不起作用的任何想法?它带有成功消息,但实际上并没有更新任何内容。
我正在使用Parse添加一个FB用户,但由于它没有func来添加用户名和电子邮件尝试这样做。任何帮助非常感谢。
JS
Parse.Cloud.run("test", { objectId: "Q8XRUcL22N", name: "Rich", email: "rich@gmail.com"}, {
success: function(results) {
console.log(results);
},
error: function(error) {
console.log(error);
}
});
云代码:
Parse.Cloud.define("test", function (request, response) {
Parse.Cloud.useMasterKey();
var uid;
var query = new Parse.Query("_User");
query.count({
success: function (results) {
uid = parseInt(results);
},
error: function () {
response.error("UID lookup failed");
}
});
var query = new Parse.Query(Parse.User);
query.equalTo("objectId", request.params.objectId);
query.first({
success: function (object) {
object.set("username", request.params.name);
object.set("email", request.params.email);
object.set("uid", uid);
var acl = new Parse.ACL();
acl.setPublicWriteAccess(false);
acl.setPublicReadAccess(false);
object.setACL(acl);
object.save();
response.success("Success Message");
},
error: function (error) {
response.error("Error Message");
}
});
});
由于
答案 0 :(得分:0)
在响应中调用success()
或error()
会暂停当时正在进行的操作,包括用户的save()
。
此外,您似乎希望在设置ACL时在用户中记录用户数。获取计数也必须与其他操作序列化。 (另外,请注意,只要用户数永远不会下降,count只能作为id“uid”。解析对象的id作为id有什么问题?)。
大多数解析函数都返回promises,使用它们是尝试嵌套回调的唯一方法。所以......
Parse.Cloud.define("test", function(request, response) {
Parse.Cloud.useMasterKey();
var uid;
var query = new Parse.Query(Parse.User);
query.count().then(function(count) {
uid = count;
return query.get(request.params.objectId);
}).then(function(object) {
object.set("username", request.params.name);
object.set("email", request.params.email);
object.set("uid", uid);
var acl = new Parse.ACL();
acl.setPublicWriteAccess(false);
acl.setPublicReadAccess(false);
object.setACL(acl);
return object.save();
}).then(function (object) {
response.success(object);
},function(error) {
response.error("Error Message");
});
});