Есть ли у кого-нибудь пример обещания синтаксического анализа, который действительно работает? (Облачный API)

Я пытаюсь заставить работать новые причудливые обещания parse.com ~ используя облачный API синтаксического анализа, я имею в виду. К сожалению, у меня возникли проблемы - я не могу найти реального обсуждения того, как заставить его работать (кажется, что все API - это ложь или некомпетентность)

Вот мой код:

query.find(
    function(results){
        if (results.length > 0){
            return results[0].get("id");
        } else {
            response.error("Nothing found. Sod this.");
        }
    },
    function(error){
        response.error("ServerDown");
    }
).then(
    function(moduleId){
    //do anything here, i don't know, increment module? Who cares!
    },
    function(error){
        console.log("error");
    }
);

По какой-то причине этот код не будет работать

Я получаю сообщение об ошибке:

{"код":141,"ошибка":"TypeError: невозможно вызвать метод "тогда" неопределенного\n в getModuleIdIfAny (main.js:71:4)\n в main.js:50:2"}

Что указывает на строку, которая читает ).then(

Мой ноутбук будет любить вас, если вы сможете дать ответы, иначе ему придется о. быстро развить крылья.


person bharal    schedule 16.06.2013    source источник
comment
Самый очевидный вывод заключается в том, что query.find() не возвращает обещание.   -  person Beetroot-Beetroot    schedule 17.06.2013
comment
Вероятно, вы включаете более старую версию JavaScript Parse SDK. Вам необходимо включить последнюю версию SDK, чтобы использовать новые функции, такие как Promises.   -  person Héctor Ramos    schedule 17.06.2013
comment
@HectorRamos, как включить другую версию? В настоящее время я просто загружаю свой js-код на сервер синтаксического анализа, я не знаю, где указать какой-либо материал sdk?   -  person bharal    schedule 18.06.2013
comment
Если вы используете Cloud Code, это указано в config/global.json.   -  person Héctor Ramos    schedule 18.06.2013
comment
@HectorRamos гений. Спасибо. Вы должны, вы должны сделать это ответом. Кроме того, в вашем ответе? Почему бы не поставить какая последняя версия? Каким-то поиском я нашел 1.2.7, но нет гарантии, что это последняя версия.   -  person bharal    schedule 19.06.2013
comment
Мы постоянно выпускаем новые версии SDK, поэтому указание здесь одной версии быстро устаревает. Как правило, рекомендуется обновить SDK до последней версии, если у вас возникнут проблемы с несуществующими символами, особенно при попытке убедиться в новых выпущенных функциях. Последняя версия SDK доступна здесь parse.com/docs/downloads.   -  person Héctor Ramos    schedule 21.06.2013
comment
фантастика - это именно то, что я хотел, расположение новейшей версии!   -  person bharal    schedule 23.06.2013


Ответы (2)


Вот код, который работает.

exports.lookupXByID = function (object)
// Must fulfill with an error when this lookup fails
// Sucessful returns must return X
{ 
    console.log("lookupXByID.entry");

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

    console.log("lookupXByID.query(" + object.id + ")");
    query.equalTo("objectId", object.id);
    var promise0 = query.first();
    var promise1 = promise0.then(
        function(result) {
            console.log("lookupXByID.promise0.success");
            if (typeof result === "undefined") {
                return utilMod.promiseerror(10004, "No matching X ID");
            } else {
                // We have a match
                return result;
            };
        }
    );
    console.log("lookupXByID.exit");
    return promise1;
};

Я не уверен, почему ваш терпит неудачу. Этот код работает и полезен, потому что стандартный вызов для получения объекта по идентификатору НЕ возвращает промис. Я называю свои обещания таким образом и использую операторы ведения журнала, как вы видите, чтобы я мог отслеживать выполнение в журнале. Я очень полюбил промисы и даже создал версию на Objective-C для использования с iOS.

Удачи.

-Боб

person LostInTheTrees    schedule 17.06.2013
comment
спасибо за код! Конечно, моя проблема заключалась в версии синтаксического анализа, которую я использовал. Но +1 за код! - person bharal; 19.06.2013

Оказывается? я использовал старую версию библиотек синтаксического анализа.

Чтобы получить последнюю версию, перейдите здесь

это под "javascript" ~ ну, кроме этого, правда.

Чтобы на самом деле использовать последнюю версию, перейдите в файл path_to_parse/config/global.json.

И в записи

"global": {
    "parseVersion": "put_the_value_you_want_here"
}
person bharal    schedule 22.06.2013
comment
Итак, каков правильный синтаксис? Ни один из ответов на всю эту ветку не сделал это явным... - person fatuhoku; 16.04.2015