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作为数组提供,它将作为一个数组返回,如果您这样做,它将作为参数应用。 在提交中看到这一行 。