解析云代码嵌套查询

时间:2016-01-05 19:09:54

标签: javascript parse-platform cloud

TL:DR:
<!-- 3. Listen on refresh events from the server --> <script language="javascript" type="text/javascript"> function init() { websocket = new WebSocket("ws://"+window.location.host+"/websocket"); websocket.onmessage = function(evt) { location.reload(); }; } window.addEventListener("load", init, false); </script>

我不知道我是否理解Javascript承诺。

首先:我的Parse.Job正常工作。它会做它应该做的事情。

第二:是的,我需要将每个用户与所有其他用户进行比较。当然,您可能会提出一些更好的方法,但我的主要问题是使用以下脚本“没有调用错误/成功”问题。

错误:

Edited my post and posted an answer resolving the issue with parallel promises.

剧本:

E2016-01-05T18:37:10.740Z]v255 Ran job checkSth with:
  Input: {}
  Result: success/error was not called

也许你们中的任何人都可以帮助我。

编辑:解决了承诺!

Parse.Cloud.job("checkSth", function(request, response) { // begin Cloud.Job("checkSth")

  var userQuery = new Parse.Query(Parse.User);
  var users = []

  userQuery.each(function(user){ // [0] userQuery.each
    users.push(user)
    console.log(users)
    var currentUser = user;

    userQuery.each(function(user){ // [1] userQuery.each
      if (user == currentUser){
        console.log("$$$$$$$ SAME USER $$$$$$$")
      } else {
        if (currentUser.get("memberIDs").indexOf(user.get("memberId")) > -1 ){
          console.log("Found (different) member user!")
        }
      }

    }).then(function(){
      console.log("User: " + user)
    }, function(error){
      response.error("Error")
    }) // [1] userQuery.each    
  }).then(function() {
    console.log("Users: " + users)
    response.success("Success")
  }, function(error){
    response.error("Error")
  }) // [0] userQuery.each

}) // end Cloud.Job("checkSth")

2 个答案:

答案 0 :(得分:0)

首先,让我用我所了解的关于Parse Cloud的所有内容来验证我的答案,我在过去的5分钟内了解了他们的API。

但是,为了回答这个问题,看起来当你运行Parse.Cloud.job时,工作也会返回一个承诺。在运行问题中定义的作业的代码中,您是否在作业运行输出上有成功/错误处理程序?

我不会建议另一种比较技术,因为我不知道这个代码在你的应用范围内做了什么,但我想建议你在嵌套函数时,不要多次使用相同的变量名。 user在您的代码中有不同的上下文,因此如果为内部函数调用使用不同的变量名,则更容易阅读。

答案 1 :(得分:0)

回答我自己的问题
使用并行承诺解决了我的问题!

new TimeTrigger(60*24, false),