大佬教程收集整理的这篇文章主要介绍了使用JavaScript在云代码中嵌套查询(Parse.com),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要做一些类似的事情
var adList = []; var query2 = new Parse.Query("QR"); var query = new Parse.Query("Campaigns"); query.equalTo("isFeatured",truE); query.find({ success: function(results) { for (var i=0; i<results.length; i++){ var ad = []; ad.push(results[i].get("Type")); //Adds "Type" to the ad array ad.push(results[i].id); //gets the objectID and appends it to the arrayy //second INNER QUERY query2.equalTo("abc",truE); adList.push(ad); query2.first({ success: function(results){ adList.push(5); },error: function(){ response.error("inner fail"); } }); } response.success(adList); //adds all ad arrays to adList array },error: function(){ response.error("failed"); } });
我尝试这样做,但内部查询从不执行.为什么?
response.success在第二个查询完成之前被触发,所以在实际等待结果之前返回.我会告诉你在response2的第二个成功回调里面移动response.success,但是由于你在一个内部同步运行一个异步操作,所以不会工作,所以你将在第一个成功的时候发送响应.
不要在循环中运行异步操作.它不工作
我不知道你想在这里完成什么,但是如果您想要做出与查询结果一样多的查询,则必须为每个通话实例化一个新的查询.
再次,我不知道你正在努力做什么,但这里是一种你可以做的事情:
var adList = []; var query = new Parse.Query("Campaigns"); query.equalTo("isFeatured",truE); query.find({ success: function(results) { var queries = []; for (var i=0; i<results.length; i++){ var query2 = new Parse.Query("QR"); query2.equalTo("abc",truE); var ad = []; ad.push(results[i].get("Type")); ad.push(results[i].id); adList.push(ad); queries.push(query2); } var totALLENgth = results.length; function makeQueries(qs){ qs.shift().first({ success: function(currentResult) { // do stuff with currentResult if(qs.length){ makeQueries(qs); } else { console.log('We successfully made ' + totALLENgth + ' queries') // we are done with the queries response.success(adList); } },error: function() { response.error('Error in inner queries nº' + totALLENgth - qs.length) } }); } makeQueries(queries); },error: function(){ response.error("failed"); } });
请记住,Parse Cloud Code允许您运行aprox 5/7秒的代码,如果您有很多结果,这可能非常慢.
Btw,看看一个Parse的matchesQuery方法.
从他们的文档取得的例子:
var Post = Parse.object.extend("Post"); var Comment = Parse.object.extend("Comment"); var innerQuery = new Parse.Query(Post); innerQuery.exists("image"); var query = new Parse.Query(Comment); query.matchesQuery("post",innerQuery); query.find({ success: function(comments) { // comments now contains the comments for posts with images. } });
以上是大佬教程为你收集整理的使用JavaScript在云代码中嵌套查询(Parse.com)全部内容,希望文章能够帮你解决使用JavaScript在云代码中嵌套查询(Parse.com)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。