迁移到Heroku后,云代码中的解析查询无法正常工作

时间:2016-02-12 07:28:41

标签: javascript heroku parse-platform migration cloud-code

我已根据Parse博客上的迁移指南将我的Parse应用程序迁移到Heroku。除了在我的云代码中运行查询外,事情似乎工作正常。这是我的代码:

Parse.Cloud.afterSave("Item", function(request) {
    //Parse.Cloud.useMasterKey(); //Uncomenting this line yields the same error

    var query = new Parse.Query(Parse.User);
    var prevAssigneeId = request.object.get("prevAssignee").id;
    var assigneeId = request.object.get("assignee").id;

    query.get(prevAssigneeId, { // <-- Results in an error
        success: function(prevAssignee) {
            console.log("Fetch prevAssignee: Success");
            query.get(assigneeId, {
                success: function(assignee) {
                    console.log("Fetch assignee: Success");

                    // Do something with the fetched users!
                },
                error: function(object, error) {
                   console.log("Query for assignee: ");
                   console.log(error);
                }
            });
        },
        error: function(object, error) {
            console.log("Query for prevAssignee: ");
            console.log(error); //<-- Error is logged here
        }
    });
});

错误

ParseError { code: undefined, message: 'unauthorized' }

这个云代码在Parse托管时用于运行正常。但是在迁移之后我得到了上述错误。其他不使用ParseQuery的云代码仍然可以正常工作。

关于问题可能是什么的任何想法?

更新

仍然无法找到解决方法,所以我尝试将代码更改为以下内容:

Parse.Cloud.afterSave("Item", function(request) {

    console.log("Executing afterSave");

    function findUser(user_id) {
        var query = new Parse.Query(Parse.User);
        //Parse.Cloud.userMasterKey();
        return query.get(user_id);
    }

    var prevAssigneePromise = findUser(request.object.get("prevAssignee").id);
    var assigneePromise = findUser(request.object.get("assignee").id);

    var promises = [prevAssigneePromise, assigneePromise];

    Parse.Promise.when(promises).then(function(prevAssignee, assignee) {

        //Do something here!
        console.log("This line was executed!");

    },
    function(error) {
        console.log(error);
    });
});

现在我注意到以下行为:

  • 按原样运行,它会产生相同的错误:[ ParseError { code: undefined, message: 'unauthorized' }, ParseError { code: undefined, message: 'unauthorized' } ]
  • 如果我取消注释Parse.Cloud.userMasterKey();,则没有错误,但不会在成功块中执行任何操作,即log&#34;此行已执行!&#34;。我可以确认日志记录本身是有效的,因为其他console.log(...)语句可以正常工作。

仅供参考:Item是一个Parse类,其列assigneeprevAssignee是指向_User s的指针。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

query.get(prevAssigneeId, {
    useMasterKey: true
    success: function(prevAssignee) {
        console.log("Fetch prevAssignee: Success");

    }
}