Node.js 解析云代码“;“第一”;查询数组返回不同的结果

Node.js 解析云代码“;“第一”;查询数组返回不同的结果,node.js,mongodb,express,parse-platform,promise,Node.js,Mongodb,Express,Parse Platform,Promise,我有一个简单的查询,如下所示: 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 groupIdA

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

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个不同的“first”查询

我使用以下代码段运行此查询:

return Parse.Promise.when(pack).then(function () {
        console.log("arguments : " + JSON.stringify(arguments));
...
...
);
参数是我从MongoDB检索数据的查询结果

如果我在parse后端运行此查询,arguments json格式如下所示:

{
   "0":{QuestionObject},
   "1":{QuestionObject},
   ...
   "16":{QuestionObject}
}
如果我在MongoDB上定义了MongoDB的本地解析实例上运行此查询,它将给出以下结果:

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

这种差异的原因是什么?是否需要在MongoDB或parse express应用程序上应用任何配置,以获得与parse backend相同的结果。

这是
parse.Promise.when
函数的问题。它的实现似乎随着提交而改变

当时
函数将所有结果应用于回调函数时,无论您在
时如何向
提供输入。这些调用产生相同的输出:

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, ...}
}
现在,这种行为改变了。如果将输入承诺作为数组提供,它将作为一个数组返回,如果这样做,它将作为参数应用。请参阅。

哎哟,“自适应when()”介于华丽和混乱之间。需要一些时间来适应。