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

Nar*_*mar 2 javascript mongoose mongodb node.js

我试图通过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
})
Run Code Online (Sandbox Code Playgroud)

我得到这个错误TypeError:无法读取未定义的属性'readPreference'

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

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

我发现这个Mongoose聚合游标承诺

但想知道这是否可能以更简单的方式使用原生承诺.我也不想像上面的答案中所解释的那样迭代光标.

Nar*_*mar 5

var allDone = Promise.all(result1,result2) 
Run Code Online (Sandbox Code Playgroud)

本来应该

var allDone = Promise.all([result1,result2])
Run Code Online (Sandbox Code Playgroud)