2

我正在尝试让 parse.com 的花哨的新承诺起作用~我的意思是使用 parse 云 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");
    }
);

无论出于何种原因,此代码将不起作用

我得到错误:

{"code":141,"error":"TypeError: Cannot call method 'then' of undefined\n at getModuleIdIfAny (main.js:71:4)\n at main.js:50:2"}

哪个指向读取的行).then(

如果你能提供答案,我的笔记本电脑会爱你的,否则它必须快速进化翅膀 v。

4

2 回答 2

6

这是一些有效的代码。

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

我不确定为什么你的失败。此代码有效且有用,因为通过 ID 检索对象的标准调用不返回承诺。我以这种方式命名我的承诺,并使用你所看到的日志语句,以便我可以在日志中跟踪执行。我已经成长为非常喜欢 Promise,甚至创建了一个用于 iOS 的 Objective-C 版本。

祝你好运。

-鲍勃

于 2013-06-17T03:45:11.083 回答
1

结果呢?我使用的是旧版本的解析库。

要获取最新版本,请转到此处

它在“javascript”下~好吧,除此之外,真的。

要实际使用最新版本,请转到 path_to_parse/config/global.json

并且在条目中

"global": {
    "parseVersion": "put_the_value_you_want_here"
}
于 2013-06-22T21:15:33.530 回答