gpt4 book ai didi

javascript - 将 Promises 与 mongoose 一起使用的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-30 21:01:37 26 4
gpt4 key购买 nike

我是 Promises 的新手,在两天内我已经看到了至少五种方法。

有些方法是旧版本,有些则专注于其他语言,所以我决定问问今天应该使用什么。

我是这样做的,带有 'err' 和 'doc' 参数:

Proposals.findById({ ...body, user }, (err, doc) => 
Advertisements.findOneAndUpdate(
{_id: body.advertisement}, {$push: {proposals: doc._id}}
)
)
.then((Proposals) => Proposals.view())
.then(success(res, 201))
.catch(next)

还有这个:

Proposals.create({ ...body, user })
.then((Proposals) => {
Advertisements.findOneAndUpdate(
{_id: body.advertisement}, {$push: {proposals: Proposals._id}}
)
.catch(Advertisements)

return Proposals.view()
})
.then(success(res, 201))
.catch(next)

如果没有“catch”和“return”,它是行不通的,但我不知道为什么。 :x

答案 Using Promises in Mongoose Routes看起来很漂亮,但我无法在上面的代码中重现。

return findUser(userId)
.then((user) => findReceipt(user.bookName))
.then((receipt) => res.status(200).json(receipt))
.catch((err) => res.status(500).json(null))

这些代码是否更正确?你能帮我修复第二个代码吗?

谢谢。

最佳答案

让我详细说明第一段代码的语法:

Proposals.findById({ ...body, user }, (err, doc) => {
return Advertisements.findOneAndUpdate(
{_id: body.advertisement}, {$push: {proposals: doc._id}}
);
})
.then((Proposals) => { return Proposals.view() })
.then(success(res, 201))
.catch(next)

在 ES6 语法中,这个函数:

() => ('test');

等于

() => { return 'test' };

所以我认为你的主要问题是因为一开始没有完全理解 ES6 语法。

当涉及到 Promises 时,您应该遵循这些最佳实践:

  1. 避免在 Promises 中嵌套 catch
  2. 通过返回它们并在 then 中使用它们来链接 Promise

希望对您有所帮助。

关于javascript - 将 Promises 与 mongoose 一起使用的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47085841/

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