Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongoose中promises数组中的Promise_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript mongoose中promises数组中的Promise

Javascript mongoose中promises数组中的Promise,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我编写了以下代码来获取用户的所有巡演。当得到它们时,我已经更新如下。代码完全适用于父承诺。巡更状态正确更新。。然后我需要让每一次旅行都有价值。但内心的承诺是无效的。谁能帮我解决这个问题 const response = await Tour.find({ customer: user.id }).sort({ createdAt: -1 }); const toursPromises = response.map(async tour => {

我编写了以下代码来获取用户的所有巡演。当得到它们时,我已经更新如下。代码完全适用于父承诺。巡更状态正确更新。。然后我需要让每一次旅行都有价值。但内心的承诺是无效的。谁能帮我解决这个问题

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);
const response=wait-Tour.find({customer:user.id}).sort({
createdAt:-1
});
const toursPromises=response.map(异步旅行=>{
如果(tour.tourStatus=='new'&&tour.transferDate
find()
不返回带有
length
属性的值,而是一个承诺。因此,您需要等待
查找()
,而不是
查找().length
。使用括号:

    (await Offer.find({
        tour: tour._id,
        offerStatus: 'new'
    })).length
备注:如果我们更加注意如何谈论承诺,那么此类错误可能会更少发生。不要说“内部承诺返回null”,而是:“内部承诺解析为null”。因为:承诺不会返回任何东西——它们不是函数,只是对象。这些对象使用值解析时会更改状态,或使用原因拒绝。

find()
不会返回带有
length
属性的值,而是返回一个承诺。因此,您需要等待
查找()
,而不是
查找().length
。使用括号:

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

备注:如果我们更加注意如何谈论承诺,那么此类错误可能会更少发生。不要说“内部承诺返回null”,而是:“内部承诺解析为null”。因为:承诺不会返回任何东西——它们不是函数,只是对象。这些对象在使用值解析时会更改状态,或者在使用原因拒绝时会更改状态。

您在哪里得到空响应?您在哪里得到空响应?非常感谢@trincot。。我还有一个问题。。。在promises中使用promise,是不是编码不好,对性能不好?我看不出有什么问题。这个承诺实际上并不存在于另一方,因为它是在另一方(外部)被创建之前解决的。因此,
Offer.find
首先得到解决,然后执行继续调用
findbyidanddupdate
,这将创建下一个承诺。@亚当将太多的承诺传递给了承诺。这一切都有问题吗?@RaghuChahar,你的问题与我的答案有关吗?如果没有,也许可以在问题下发表评论,而不是在我的回答下?@trincot我很抱歉我提到了你。实际上我是在问你这个。非常感谢你@trincot。。我还有一个问题。。。在promises中使用promise,是不是编码不好,对性能不好?我看不出有什么问题。这个承诺实际上并不存在于另一方,因为它是在另一方(外部)被创建之前解决的。因此,
Offer.find
首先得到解决,然后执行继续调用
findbyidanddupdate
,这将创建下一个承诺。@亚当将太多的承诺传递给了承诺。这一切都有问题吗?@RaghuChahar,你的问题与我的答案有关吗?如果没有,也许可以在问题下发表评论,而不是在我的回答下?@trincot我很抱歉我提到了你。实际上我是在问你这个。