Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析Cloudcode错误分支需要60秒+;回答:为什么?_Javascript_Parse Platform_Parse Cloud Code_Back4app - Fatal编程技术网

Javascript 解析Cloudcode错误分支需要60秒+;回答:为什么?

Javascript 解析Cloudcode错误分支需要60秒+;回答:为什么?,javascript,parse-platform,parse-cloud-code,back4app,Javascript,Parse Platform,Parse Cloud Code,Back4app,我跳转到back4app,运行Parse,到目前为止我已经爱上了它。我正在编写一个简单的云代码,它似乎在每一步都在与我抗争 这个想法是:发送一个通道字符串,通过Parse.Installation进行简单的查找,并在第一个找到的记录中返回一个字段。当找到频道时,它就像一个符咒 问题是:如果找不到记录,则需要60秒以上的时间返回。找到的记录的返回时间通常为一秒钟。我不是javascript大师,尝试了许多变体都没有用,JSLint似乎不想测试Parse.Cloudcode.Define块 问题是:

我跳转到back4app,运行Parse,到目前为止我已经爱上了它。我正在编写一个简单的云代码,它似乎在每一步都在与我抗争

这个想法是:发送一个通道字符串,通过Parse.Installation进行简单的查找,并在第一个找到的记录中返回一个字段。当找到频道时,它就像一个符咒

问题是:如果找不到记录,则需要60秒以上的时间返回。找到的记录的返回时间通常为一秒钟。我不是javascript大师,尝试了许多变体都没有用,JSLint似乎不想测试Parse.Cloudcode.Define块

问题是:我在这里的结构有多混乱,导致了这种延迟?我根本看不到这个问题。任何想法都是非常受欢迎的:

Parse.Cloud.define("test", function(request, response) {

               var query = new Parse.Query(Parse.Installation);
               query.equalTo("channels", request.params.other);
               query.descending("updatedAt");
               query.first({
                           useMasterKey: true,
                           success: function(installation) {
                           response.success(installation.get("lastLoginAt"));
                           },
                           error: function(error) {
                           response.error("test");
                           }
                           });
               });

{useMasterKey的已编辑函数:true…没有看到计时问题的任何更改}

没有看到任何明显的问题,我只留下一个我将如何编写它的片段:

Parse.Cloud.define("test", function(request, response) {
    var query = new Parse.Query(Parse.Installation);
    query.equalTo("channels", request.params.other);
    query.descending("updatedAt");
    query.first({useMasterKey: true})
        .then(function(installation) {
            if (installation) {
                response.success(installation.get("lastLoginAt"));
            } else {
                response.error("No installation with channel: " + request.params.other);
            }
        })
});

我唯一想到的是,您可能需要在mongodb中为“通道”编制索引。其次,我要提到的是,不鼓励使用masterkey,而是将
{useMasterKey:true}
作为查询的第一个参数。我没有那种控制级别,因为back4app在最后管理解析安装。我不得不假设,因为[channels]是正确推送通知的关键,所以索引已经就位。作为以防万一的措施,我将调整代码并运行它。与b4a聊天时,他们建议这可能是错误块的结构,但我尝试了许多样式,但都没有用。谢谢!西丽克斯:你是金色的。这是可行的,我没有解释为什么我的原始代码不可行。60秒的延迟似乎是某个地方的一个深缺陷。我最初有.then结构,但没有.fail块。这确实起到了作用,并有望帮助其他人摆脱困境。谢谢。我的错是,我假设好的块可以工作,只测试了没有找到记录的块。上面的代码在这两种情况下都会产生141,这表明代码本身存在一些错误。唉,我还没看到呢。很明显,我对javascript很差劲;)我甚至把所有东西都撕了下来,只留下一个简单的回程块。返回错误为“无值”的时间超过60秒。有点不对劲。。也许这是back4app的问题?嗯,糟糕透了。我没有使用back4app的经验。Parse.com关闭时切换到heroku+mlabs我用这个url ping了他们,希望他们有机会解决这个问题。141对我来说,因为找不到云函数?另外,我刚刚意识到android上的
first
查询总是返回一个肯定的结果。也就是说,不要在没有结果的情况下抛出错误。更新了代码(如果javascript SDK的行为方式相同)