node.js - 猫鼬中两个 .save() 的正确方法
问题描述
我试图在同一个函数中保存到两个不同的文档和两个不同的模型,但无论我尝试什么,我似乎都会遇到奇怪的错误。似乎无论出于何种原因,猫鼬都使这完全行不通。
我有两个嵌套的 findOne 函数,一个是查找书,另一个是查找教授,对象是更新它们以相互关联。
有没有推荐的方法我应该这样做,也许是两个单独的后端端点和两个单独的函数?那将是解决这个问题的一种方法,但我想知道为什么我不能做下面的事情。
await prof.save().then(async () => {
await book
.save()
.then(() => {
return res.status(200).json({
success: true,
message: 'items updated'
}).catch( (err) => {
return res.status(400)
})
})
})
解决方案
首先你不能await
和.then .catch
一起使用。如果你想在 mongoose 中更新两个或更多集合,最好使用事务,就像rollback
在关系数据库中一样,但是如果你是 mongoose 的新手,很难实现事务,没有事务你可以这样做
try {
await prof.save();
await book.save();
return res.status(200).json({
success: true,
message: "items updated",
});
} catch (error) {
return res.status(400)
}
推荐阅读
- docker - Kubernetes Redis rejson持久性数据不保存
- codeigniter - CodeIngiter 电子邮件协议 sendmail、mail 和 SMTP 的区别?
- r - Sommer 封装:mmer 与 MEMMA
- docker - 使用 compose 运行 docker 容器时,npm 找不到 package.json
- php - 使用 php mysql 查找不同商店/仓库中每种产品的总和
- python - Pycharm python解释器错误地显示错误
- javascript - 我需要一些帮助来减少运行测试的时间
- php - 更新关联数组的列不起作用
- c++ - 二叉搜索树插入数据问题
- java - 如何读取“params”数组中的任何一个