【发布时间】:2020-07-26 01:19:40
【问题描述】:
我一直在努力争取承诺,但我还没有找到解决问题的方法。
我想做什么;
我正在从 MongoDB 获取聚合数据并将其值分配给类对象。 这是聚合的一段代码;
static get(email: BaseUser['email']) {
const query = { email: email }
return new Promise(resolve => {
const data = this.model.aggregate([
{
$match: query
}, {
$project:
{ // Get the last element of the array which is previous week's data
d1: { $arrayElemAt: ["$data.myData1", -1] },
d2: { $arrayElemAt: ["$data.myData2", -1] },
d3: { $arrayElemAt: ["$data.myData3", -1] },
email: email
}
}
])
resolve(data)
})
}
我在这里调用了上面的函数;
private static async set(email: string) {
console.log(1)
const data = await MongooseBusiness.get(email); // below code won't work
console.log(data, 'data')
const oldCumulativeCounts = data[0];
console.log(4)
return new Promise(resolve => resolve('a piece of data'));
}
就像我在上面的评论中所说,等待之后的代码不起作用。就像它甚至不存在一样。即使我在 get 函数中解决了一个承诺。有什么帮助吗?
【问题讨论】:
-
this.model.aggregate是异步函数吗? -
是的。这是猫鼬的默认聚合函数。
-
顺便说一句,如果我将回调设置为
get,那么回调也不会被执行
标签: node.js typescript mongoose async-await es6-promise