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