关于解析平台:用户对象未保存在afterSave代码中

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();
});