Облачный код Parse-server — ранее работавшие запросы возвращают неопределенные ошибки

Я перенес свое приложение Parse в Heroku и MongoLab. Все работает нормально, за исключением моих запросов облачного кода. Какой бы запрос я ни вызывал, вызывается блок ошибки, а объект ошибки не определен.

Пример запроса:

Parse.Cloud.beforeDelete("Project", function(request, response) {

    Parse.Cloud.useMasterKey();

    var projectId = request.object.id;

    var Project = Parse.Object.extend("Project");    
    var query = new Parse.Query(Project);

        query.get(projectId, {
            success: function(project) {

               //do some stuff with project
                response.success("Success!"); 

            },
            error: function(error) {
                console.log("Error Querying Deleted Project");
                response.error("Error!"); 
            }

        });

});

Не только этот запрос, другие запросы тоже не работают. Эти запросы работали при размещении на Parse.com. Я их не менял.

Изменить:

Итак, я изменил свой синтаксис с error: function(error) на error: function(model, error) и в итоге получил ошибку, которую я немного исследовал, и теперь я нахожусь в точке, где я понимаю, что мой класс Project (которым я пытаюсь манипулировать выше) никогда не получает никакого вида разрешения. К нему не привязана ни роль, ни ACL.

Вот как я создаю свою роль:

var roleName = "hasSound_" + ident;
var projectRole = new Parse.Role(roleName, new Parse.ACL());
projectRole.getUsers().add(creator); 

return projectRole.save().then(function(role) {

    var acl = new Parse.ACL();
    acl.setReadAccess(role, true); //give read access to Role
    acl.setWriteAccess(role, true); //give write access to Role

    project.setACL(acl);            
    project.save();

  });

И вот плохой запрос, который я получаю при попытке создать Parse.Role:

Mar 04 14:39:32 ancient-lake-41070 heroku/router: at=info method=POST path="/parse/classes/_Role" host=ancient-lake-41070.herokuapp.com request_id=82af3849-842a-406f-8a4b-5f573e08a1e1 fwd="54.145.36.110" dyno=web.1 connect=0ms service=6ms status=400 bytes=578


person mnearents    schedule 04.03.2016    source источник


Ответы (1)


Ваша проблема, вероятно, в том, что вы не должны использовать Parse.Cloud.useMasterKey() с сервером синтаксического анализа. Вместо этого вы должны установить мастер-ключ в запросе, подобном этому query.get(projectId, {useMasterKey: true, success: fun...}}.

При этом странно, что объект ошибки был нулевым. Должно было быть сообщение unauthorized.

РЕДАКТИРОВАТЬ: попробуйте этот синтаксис для вашей функции ошибки: error: function(model, error) { console.log(error); }

person Simon Bengtsson    schedule 04.03.2016
comment
Я думал, что это как-то связано и с Parse.Cloud.useMasterKey(), но не повезло. Все еще сбой, и объект ошибки все еще не определен. - person mnearents; 04.03.2016
comment
Вы получаете объект ошибки, если вместо этого используете этот синтаксис? error: function(model, error) { console.log(error); } - person Simon Bengtsson; 05.03.2016
comment
Я отредактировал свой ответ, из-за чего мне не удалось получить доступ к ошибке Parse API, которую я исправил, и теперь у меня есть новые проблемы. - person mnearents; 05.03.2016
comment
Вероятно, вам следует создать новый вопрос для этой проблемы. Не стесняйтесь ссылаться на него здесь. Убедитесь, что вы включили ошибку, полученную от метода save(). Кроме того, у вас, вероятно, должно быть return project.save(); вместо project.save(). - person Simon Bengtsson; 05.03.2016