解析后台作业未正确查询所有用户

时间:2014-07-22 18:49:47

标签: javascript parse-platform

我正在尝试按照Parse的文档/示例在后台作业中运行查询。我想要做的是查询数据库中的所有User,并对与matchCenterItem相关联的User运行查询。

当我运行此作业时,它会记录status.success,但不会超过console.log('about to start the matchCenterItem query');

query.find().then(function(results)从未运行,让我觉得我要么错误地构造matchCenterItem查询,要么不以正确的方式查询每个User。我只发布了相关的代码片段以保持简洁,但如果需要,我很乐意发布后台作业的整个代码。

Parse.Cloud.job("MatchCenterBackground", function(request, status) {

    //Parse.Cloud.useMasterKey();

    console.log('background task started');
    //defines which parse class to iterate through


    //Query through all users 
    var usersQuery = new Parse.Query(Parse.User);

    //For every user, do the following:
    usersQuery.each(function(user) {
      //query through all their matchCenterItems
      var matchCenterItem = Parse.Object.extend("matchCenterItem");
      var query = new Parse.Query(matchCenterItem);

      // promise and searchterm arrays to be filled
      var promises = [];
      var searchTerms = [];

      //setting the limit of items at 10 for now
      query.limit(10);

      console.log('about to start the matchCenterItem query');

      query.find().then(function(results) {

        console.log('matchCenterItem query results:' + results);
        if (results.length > 0){ 

      //code cut off here

1 个答案:

答案 0 :(得分:2)

好的,这是很多代码并且深深嵌套。

从我所看到的,您需要返回两个当前未被返回的承诺

27: return query.find().then(function(results) {
104: return Parse.Promise.when(promises).then(function(results) {

此外,你有两个底部的承诺,应该与then()链接在一起,或与Parse.Promise.when平行。无论哪种情况,结果都需要返回。

232: newMComparisonArray.save({
244: mComparisonQuery.find({

所以代码的问题只与创建的promises有关,但没有等待。每当你创建一个承诺时,你应该考虑谁在听取完成的承诺,并确保将承诺返回给听众。