В Parse server метод get() вызывает сбой

У меня есть find запрос с includeчтобы получить данные указателя. Он работает нормально, но если объект-указатель не существует, происходит сбой сервера.

Вот мой запрос:

var repliesQuery = new Parse.Query("Reply");
repliesQuery.include("author");
repliesQuery.find({
    useMasterKey: true
}).then(function(foundMessages) {
    var results = [];
    for (var i = 0; i < foundMessages.length; i++) {
        var rp = {};
        rp.title = foundMessages[i].get("title");
        rp.description = foundMessages[i].get("description");

        var author = foundMessages[i].get("author");
        rp.authorId = author.id;

        results.push(rp);
    }
    promise.resolve(results);
});

Все работает нормально, когда автор существует, но если его нет, то сервер падает.

Я пытался добавить это:

if (author.hasOwnProperty('id')) {
    rp.authorId = author.id;
}

Но до сих пор вопрос не решен.

Есть ли способ исправить эту проблему?

1 ответ

Решение

Скорее всего, вы получаете доступ к свойству undefined объект, в данном случае author, в очереди

rp.authorId = author.id

Как предлагает Дави, включите проверку, если author существует.

var repliesQuery = new Parse.Query("Reply");
repliesQuery.include("author");
repliesQuery.find({
    useMasterKey: true
}).then(function(foundMessages) {
    var results = [];
    for (var i = 0; i < foundMessages.length; i++) {
        var rp = {};
        rp.title = foundMessages[i].get("title");
        rp.description = foundMessages[i].get("description");

        var author = foundMessages[i].get("author");
        if (author) {
            rp.authorId = author.id;
        }

        results.push(rp);
    }
    promise.resolve(results);
});

Ваш чек

if (author.hasOwnProperty('id')) {
    rp.authorId = author.id;
}

также обращается к свойству author, поэтому снова будет выдано сообщение об ошибке, если author является undefined.

Другие вопросы по тегам