用户对象未保存在 afterSave 代码中
User object not saving in afterSave code
我已经尝试了多种变体,但由于某种原因,字段 "Followers" 没有递增:
ParseObject follow = new ParseObject("Follow");
follow.put("from", currentUser);
follow.put("to", parseUser);
follow.put("approved", approved);
然后在云代码中:
Parse.Cloud.afterSave("Follow", function(request) {
var to = request.object.get("to");
var query = new Parse.Query(Parse.User);
query.equalTo("objectId", to.id);
query.first({
success: function(user) {
user.increment("Followers");
user.save();
console.log("User: " + user.id + " Followers: " + user.get("Followers"));
}, error: function(error) {
console.log("afterSave: " + error);
}
});
var currentUser = Parse.User.current();
currentUser.increment("Following");
currentUser.save();
});
根据正在运行的日志:
I2015-11-28T18:21:54.745Z]v47 after_save 为用户 k0ZvNAy3Mk 的关注触发:
输入:{"object":{"approved":false,"createdAt":"2015-11-28T18:21:54.743Z","from":{"__type ":"Pointer","className":"_User","objectId":"k0ZvNAy3Mk"},"objectId":"JQBO9m21uA","to":{ "__type":"Pointer","className":"_User","objectId":"bcpbFaXj9C"},"updatedAt":"2015-11-28T18: 21:54.743Z"}}
结果:成功
I2015-11-28T18:21:54.906Z]用户:bcpbFaXj9C 追随者:1
但是当我查看数据时,该用户的关注者字段仍然显示 0
我也试过:
Parse.Cloud.afterSave("Follow", function(request) {
var to = request.object.get("to");
to.increment("Followers");
to.save();
var currentUser = Parse.User.current();
currentUser.increment("Following");
currentUser.save();
});
根据文档,因为它是一个指针,我应该能够直接操作它,但这也不起作用。
有什么想法要做什么或为什么这不能正常工作吗?
save() 是异步函数,你不应该在它完成之前离开这个函数。使用这个:
user.save().then(function(success){
console.log("User: " + success.id + " Followers: " + success.get("Followers"));
}, function (error){
console.log(error.message);
});
看起来解析云代码取决于当前登录的用户,并且不允许操作其他用户的数据,除非您以他们的身份登录。
Parse.Cloud.afterSave("Follow", function(request) {
Parse.Cloud.useMasterKey(); // Needed this
var to = request.object.get("to");
to.increment("Followers");
to.save();
var currentUser = Parse.User.current();
currentUser.increment("Following");
currentUser.save();
});
我已经尝试了多种变体,但由于某种原因,字段 "Followers" 没有递增:
ParseObject follow = new ParseObject("Follow");
follow.put("from", currentUser);
follow.put("to", parseUser);
follow.put("approved", approved);
然后在云代码中:
Parse.Cloud.afterSave("Follow", function(request) {
var to = request.object.get("to");
var query = new Parse.Query(Parse.User);
query.equalTo("objectId", to.id);
query.first({
success: function(user) {
user.increment("Followers");
user.save();
console.log("User: " + user.id + " Followers: " + user.get("Followers"));
}, error: function(error) {
console.log("afterSave: " + error);
}
});
var currentUser = Parse.User.current();
currentUser.increment("Following");
currentUser.save();
});
根据正在运行的日志:
I2015-11-28T18:21:54.745Z]v47 after_save 为用户 k0ZvNAy3Mk 的关注触发: 输入:{"object":{"approved":false,"createdAt":"2015-11-28T18:21:54.743Z","from":{"__type ":"Pointer","className":"_User","objectId":"k0ZvNAy3Mk"},"objectId":"JQBO9m21uA","to":{ "__type":"Pointer","className":"_User","objectId":"bcpbFaXj9C"},"updatedAt":"2015-11-28T18: 21:54.743Z"}} 结果:成功 I2015-11-28T18:21:54.906Z]用户:bcpbFaXj9C 追随者:1
但是当我查看数据时,该用户的关注者字段仍然显示 0
我也试过:
Parse.Cloud.afterSave("Follow", function(request) {
var to = request.object.get("to");
to.increment("Followers");
to.save();
var currentUser = Parse.User.current();
currentUser.increment("Following");
currentUser.save();
});
根据文档,因为它是一个指针,我应该能够直接操作它,但这也不起作用。
有什么想法要做什么或为什么这不能正常工作吗?
save() 是异步函数,你不应该在它完成之前离开这个函数。使用这个:
user.save().then(function(success){
console.log("User: " + success.id + " Followers: " + success.get("Followers"));
}, function (error){
console.log(error.message);
});
看起来解析云代码取决于当前登录的用户,并且不允许操作其他用户的数据,除非您以他们的身份登录。
Parse.Cloud.afterSave("Follow", function(request) {
Parse.Cloud.useMasterKey(); // Needed this
var to = request.object.get("to");
to.increment("Followers");
to.save();
var currentUser = Parse.User.current();
currentUser.increment("Following");
currentUser.save();
});