Mongoose / MongoDB - 如何使用聚合查询的promise

时间:2017-05-19 07:40:09

标签: javascript node.js mongodb mongoose

我正尝试通过mongoose对MongoDB中的2个不同集合执行2个查询,然后将其结果合并到REST API响应中。

示例:

var result1 = Model1.aggregate([<operations here>]).exec()

var result2 = Model2.aggregate([<operations here>]).exec()

var allDone = Promise.all(result1,result2)

allDone.then(function(data1,data2){
//Do something with both data
})

我收到此错误 TypeError:无法读取未定义的属性“readPreference”

当回调的函数签名不是函数(错误,文档)时会发生这种情况{...

如果我使用Aggregators的回调,它可以工作,但我不想链接回调/查询,并认为这样会更有效。

我发现了Mongoose aggregate cursor promise

但是想知道这是否可以通过本地承诺以更简单的方式实现。 我也不想迭代光标,如上面的答案所述。

1 个答案:

答案 0 :(得分:5)

var allDone = Promise.all(result1,result2) 

应该是

var allDone = Promise.all([result1,result2])