Parse.com JS SDK内部循环多个查询

时间:2014-05-12 10:33:54

标签: parse-platform

提前感谢您的帮助。

我遇到需要使用Parse JS SDK查询在循环内执行多个查询的情况。

如我们所知,有时Parse表现为异步。

查询如下:

1)查询表并查找一些记录(这是有效的)。 2)对于找到的每条记录,从另一个表中获取一个包含一个对象ID的属性(这是有效的)。 3)对于每个ID,进行查询,从另一个表中获取信息(这是问题)。

我尝试了几种方法尝试在循环中进行所有查询并尝试同步最后一个查询以便使用所需数据生成response.success,但到目前为止我还没有。

您是否知道如何使用Parse JS SDK在循环内同步执行多个查询?

感谢。

2 个答案:

答案 0 :(得分:3)

使用Parse.Promise是在多个异步请求之间进行协调的最简单方法。

// build an array of queries
var queries = [];
for(var i=0;i<10;i++) {
    // construct the query and kick it off
    var q = new Parse.Query().find();
    queries.push(q);
}

// Wait for them all to complete
Parse.Promise.when(queries).then(function() {
    // the results of each query are returned as arguments to the callback
    for(var i=0, l=arguments.length; i<l; i++) {
        // process each result
    }
});

答案 1 :(得分:0)

这听起来非常像关系查询。您可以使用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.
  }
});

不要触发第一个查询,而是在第二个查询的matchesQuery约束中使用它。因此,您可以使用点表示法来获取ID并在第二个查询中使用它,而不是遍历返回的对象并获取ID。