gpt4 book ai didi

javascript - Mongoose 使用 Promise 或 Async/Await 的区别?

转载 作者:太空宇宙 更新时间:2023-11-03 21:51:40 24 4
gpt4 key购买 nike

使用 ExpressJs(作为 Node.js 的 Web 框架)和 Mongoose(用于对 MongoDB 建模)创建 Web 服务。我有一个关于处理某些 Mongoose 方法返回对象的最佳方法的问题(保存、查找、findByIdAndDelete 等)。

正如 mongoose 文档所述,Model.prototype.save() 将返回 «Promise,undefined» 如果与回调或 Promise 一起使用,则返回未定义。了解更多:https://mongoosejs.com/docs/api.html#model_Model-save

所以我想知道我们应该使用哪一个或者在哪种情况下一个比另一个更好?

作为使用 ES7 Async/Await 的示例:

const mongoose = require('mongoose');
const Person = mongoose.model('person');

module.exports.savePerson = async (req,res) => {
await new Person( {...req.body} )
.save( (err, doc)=> {
err ? res.status(400).json(err) : res.send(doc);
});
}

作为使用 ES6 Promise 的示例:

const mongoose = require('mongoose');
const Person = mongoose.model('person');

module.exports.savePerson = (req,res) => {
const person = new Person( {...req.body} )

person.save()
.then(person => {
res.send(person);
})
.catch(err => {
res.status(400).json(err)
});
}

最佳答案

如果您想等待,请不要使用回调:

 module.exports.savePerson = async (req,res) => {
try {
const doc = await new Person( {...req.body} ).save();
res.send(doc);
} catch(error) {
res.status(400).json(err);
}
};

So i want to know should we use [.thens] or [awaits] ?

这是基于意见的,但在我看来,await 更具可读性,尤其是当您必须等待多个事情时。

<小时/>

安全建议:未经验证直接将客户端数据传递到数据库有点危险。

关于javascript - Mongoose 使用 Promise 或 Async/Await 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53306400/

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