gpt4 book ai didi

javascript - Mongoose 中的 promise 数组中的 promise

转载 作者:行者123 更新时间:2023-12-01 00:15:03 25 4
gpt4 key购买 nike

我编写了以下代码来获取用户的所有游览。当得到它们时,我更新如下。代码完全符合 parent 的 promise 。旅游状态正确更新。然后我需要获取每个旅游优惠的数量。但内部 promise 返回 null。谁能帮我解决这个问题。

const response = await Tour.find({ customer: user.id }).sort({
createdAt: -1
});

const toursPromises = response.map(async tour => {
if (tour.tourStatus === 'new' && tour.transferDate < Date.now()) {
return await Tour.findByIdAndUpdate(
tour._id,
{ $set: { tourStatus: 'expired' } },
{ new: true }
);
} else if (tour.tourStatus === 'new') {
return await Tour.findByIdAndUpdate(
tour._id,
{
$set: {
offers: await Offer.find({
tour: tour._id,
offerStatus: 'new'
}).length
}
},
{ new: true }
);
} else {
return tour;
}
});

const tours = await Promise.all(toursPromises);

最佳答案

find() 不会返回带有 length 属性的值,而是返回一个 promise 。因此,您需要 await find(),而不是 find().length。使用括号:

    (await Offer.find({
tour: tour._id,
offerStatus: 'new'
})).length

备注:如果我们多注意如何谈论 Promise,也许这样的错误会更少发生。不要说“内部 promise 返回 null”,而是:“内部 promise 解析为null” 。因为: Promise 不返回任何东西——它们不是函数,而只是对象。这些对象在解析某个值或拒绝某个原因时会更改状态。

关于javascript - Mongoose 中的 promise 数组中的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59820959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com