User object not saving in afterSave code
我已经尝试了多种变化,由于某种原因,"跟随者"字段未增加:
1 2 3 4 | ParseObject follow = new ParseObject("Follow"); follow.put("from", currentUser); follow.put("to", parseUser); follow.put("approved", approved); |
然后在云代码中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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
我也尝试过:
1 2 3 4 5 6 7 8 9 | 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()是异步函数,您不应在函数完成前离开它。使用此:
1 2 3 4 5 | user.save().then(function(success){ console.log("User:" + success.id +" Followers:" + success.get("Followers")); }, function (error){ console.log(error.message); }); |
看起来像分析云代码取决于当前登录的用户,除非您以他们的身份登录,否则不允许在其他用户上操纵数据。
1 2 3 4 5 6 7 8 9 10 11 | 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(); }); |