【问题标题】:Does anybody have an example of a parse promise that actually works? (Cloud API)有没有人有一个实际有效的解析承诺的例子? (云 API)
【发布时间】:2013-06-23 05:15:33
【问题描述】:

我正在尝试让 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(的行

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

【问题讨论】:

  • 最明显的结论是query.find() 没有返回承诺。
  • 您可能包含旧版本的 JavaScript Parse SDK。您需要包含最新版本的 SDK 才能使用 Promises 等新功能。
  • @HectorRamos 我如何包含不同的版本?目前我只是将我的 js 代码上传到解析服务器,我不知道在任何地方指定任何 sdk 东西?
  • 如果您使用的是 Cloud Code,则在 config/global.json 中指定
  • 我们不断发布新版本的 SDK,因此在这里指定一个版本很快就会过时。如果遇到不存在符号的任何问题,尤其是在尝试确保新发布的功能时,通常最好更新到最新版本的 SDK。最新 SDK 可在此处获取 parse.com/docs/downloads

标签: jquery parse-platform promise


【解决方案1】:

这里有一些有效的代码。

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 版本。

祝你好运。

-鲍勃

【讨论】:

  • 感谢代码!当然,我的问题是我使用的解析版本。但是 +1 代码!
【解决方案2】:

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

要获取最新版本,go here

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

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

在条目中

"global": {
    "parseVersion": "put_the_value_you_want_here"
}

【讨论】:

  • 那么正确的语法是什么?整个线程上的答案都没有明确表示......
猜你喜欢
  • 1970-01-01
  • 2011-05-06
  • 2014-10-08
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多