Я некоторое время боролся с обещаниями и пока не смог найти решения своей проблемы.
Что я хочу сделать;
Я выбираю агрегированные данные из 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
. Любая помощь?