Javascript 解析云代码嵌套查询

Javascript 解析云代码嵌套查询,javascript,parse-platform,cloud,Javascript,Parse Platform,Cloud,tl:dr: 编辑了我的帖子,并发布了一个解决问题的答案,同时做出了相应的承诺。 我不知道我是否正确理解Javascript承诺 首先:我的Parse.Job工作正常。它完成了它应该做的事情 第二:是的,我需要将每个用户与所有其他用户进行比较。当然,您可能会建议一些更好的方法来实现这一点,但我的主要问题是以下脚本的“未调用错误/成功”问题 错误: E2016-01-05T18:37:10.740Z]v255使用以下命令运行作业检查: 输入:{} 结果:未调用成功/错误 剧本: Parse.Cl

tl:dr:
编辑了我的帖子,并发布了一个解决问题的答案,同时做出了相应的承诺。

我不知道我是否正确理解Javascript承诺

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

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

错误:

E2016-01-05T18:37:10.740Z]v255使用以下命令运行作业检查:
输入:{}
结果:未调用成功/错误

剧本:

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")
也许你们中的任何人都能帮助我

编辑:用承诺解决

Parse.Cloud.job("doSth", function(request, status) { // begin Cloud.Job("doSth")
  var userQuery = new Parse.Query(Parse.User);
  var users = []
  var promises = []
  promises.push( // Start Promise [0]
userQuery.each(function(user){ // userQuery.each [0]

  var currentUser = user;
  users.push("LOOP1-"+user.get("firstname"))
  console.log("LOOP1-User: "+user.get("firstname"))

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

        }
      }
      users.push("LOOP2-"+user.get("firstname"))
      console.log("LOOP2-User: "+user.get("firstname"))
    }) // End userQuery.each [0]
  //) // End Promise [1]
}) // End userQuery.each [0]
  ) // End Promise [0]
  Parse.Promise.when(promises).then(function(){
console.log(users)
status.success("Success")
  }, function(error){
status.error(error)
  })

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

首先,让我用我所知道的关于解析云的所有知识来限定我的答案,我在过去5分钟里学习了他们的API

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


我不建议使用另一种比较技术,因为我不知道这段代码在你的应用程序中起什么作用,但我想建议当你嵌套函数时,不要多次使用同一个变量名<代码>用户在代码中有不同的上下文,因此,如果您对内部函数调用使用不同的变量名,则更容易阅读。

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

Parse.Cloud.job("doSth", function(request, status) { // begin Cloud.Job("doSth")
  var userQuery = new Parse.Query(Parse.User);
  var users = []
  var promises = []
  promises.push( // Start Promise [0]
userQuery.each(function(user){ // userQuery.each [0]

  var currentUser = user;
  users.push("LOOP1-"+user.get("firstname"))
  console.log("LOOP1-User: "+user.get("firstname"))

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

        }
      }
      users.push("LOOP2-"+user.get("firstname"))
      console.log("LOOP2-User: "+user.get("firstname"))
    }) // End userQuery.each [0]
  //) // End Promise [1]
}) // End userQuery.each [0]
  ) // End Promise [0]
  Parse.Promise.when(promises).then(function(){
console.log(users)
status.success("Success")
  }, function(error){
status.error(error)
  })

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

谢谢你的回答!我刚刚用我的解决方案编辑了我的帖子。我研究了将近5个小时的文档才发现这个。。。