parsing云代码“第一个”查询数组返回不同的结果

我有一个简单的查询如下:

var getGreaterQuestion = function (gid) { var query = new Parse.Query(Parse.Object.extend("Question")); query.equalTo("groupId", gid); return query.first(); } 

我正在准备一个由这个函数组成的数组:

 var groupIds = _.range(1, 17); var groupIdAndRandomNumberPack = _.map(groupIds, function (gid) { return {groupId: gid, random: Math.random()}; }); var pack = _.map(groupIdAndRandomNumberPack, function (queryItem) { return getGreaterQuestion(queryItem.groupId, queryItem.random); }); 

pack数组中, Question类有16个不同的“第一”查询。

我正在使用下面的代码片段运行此查询:

 return Parse.Promise.when(pack).then(function () { console.log("arguments : " + JSON.stringify(arguments)); ... ... ); 

参数是我的查询从MongoDB中检索数据的结果。

如果我在parsing后端运行这个查询,参数json格式如下所示:

 { "0":{QuestionObject}, "1":{QuestionObject}, ... "16":{QuestionObject} } 

如果我在本地分析实例上使用MongoLAB上定义的MongoDB运行这个查询,它会得出以下结果:

 { "0":[ {QuestionObject}, {QuestionObject}, .... {QuestionObject} ] } 

这种差异的原因是什么? 有什么configuration我需要应用在MongoDB或parsingexpression式应用程序获得相同的结果作为parsing后端给出。

这是Parse.Promise.when函数的问题。 它的实现似乎改变了这个提交。

那么when函数将所有结果应用到您的callback函数时,无论您如何向when提供input。 这些调用导致相同的输出:

 Parse.Promise.when([promise0, promise1, ...]).then(resultFunc) Parse.Promise.when(promise0, promise1, ...).then(resultFunc) var resultFunc = function() { console.log("arguments : " + JSON.stringify(arguments)); //prints out like {"0": promiseResult0, "1", promiseResult1, ...} } 

现在,这个行为被改变了。 如果您将inputpromise作为数组提供,它将作为一个数组返回,如果您这样做,它将作为参数应用。 在提交中看到这一行 。