用户对象未保存在afterSave代码

时间:2015-11-28 18:34:37

标签: parse-platform cloud-code

我尝试了多种变体,由于某种原因,“追随者”字段没有增加:

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 “ ”对象ID“: ”k0ZvNAy3Mk“}, ”对象ID“: ”JQBO9m21uA“, ”到“:{ ”__类型“: ”指针“, ”类名“: ”_用户“, ”对象ID“: ”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();
});

根据文档,因为它是一个指针,我应该能够直接操作它,但这也不起作用。

任何想法该怎么做或为什么这不能正常工作?

2 个答案:

答案 0 :(得分:1)

save()是异步函数,你不应该在函数完成之前离开它。使用此:

user.save().then(function(success){
console.log("User: " + success.id + " Followers: " + success.get("Followers"));
}, function (error){
console.log(error.message);
});

答案 1 :(得分:0)

看起来解析云代码取决于当前登录的用户,除非您以其身份登录,否则不允许操纵另一个用户的数据。

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