gpt4 book ai didi

javascript - 在云代码中使用 javascript 的嵌套查询 (Parse.com)

转载 作者:可可西里 更新时间:2023-11-01 02:58:07 25 4
gpt4 key购买 nike

是否可以在云代码中进行嵌套查询?

我希望能够做类似的事情

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");
}
});

我尝试这样做,但内部查询从未执行过。为什么?

最佳答案

第二个查询是异步的,所以将它包装在 for 中是行不通的。

response.success 在第二个查询完成之前被触发,因此您在实际等待结果之前返回。我会告诉你将 response.success 移动到 query2 的第二个 success 回调中,但这也不起作用,因为你正在运行在 for 中同步进行异步操作,因此您将在第一个 success 中发送响应。

不要在循环内运行异步操作。它不起作用。

我不确定您要在这里完成什么,但是如果您想进行与结果一样多的查询,则必须为每次调用实例化一个新的 Query

同样,我不确定您到底想做什么,但您可以通过以下方式执行类似的操作:

    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 让您运行代码大约 5/7 秒,如果您有很多结果,这可能会非常慢。顺便说一句,看看 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 - 在云代码中使用 javascript 的嵌套查询 (Parse.com),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19777207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com