gpt4 book ai didi

node.js - 保存多个模型 Mongoose

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

让我们从这个开始,我有 2 个模型

-Users
-Forms

我创建了一个路由类型 POST /form-event,我想发送这些字段

first_name,
last_name,
form: {}

first_namelast_name 属于 Users Modelform 属于 Forms型号

好吧,我的问题是尝试将 body 数据保存到这两个模型中,我正在这样做,

// Create a User
const user = new User({
...req.body,
_id: new mongoose.Types.ObjectId()
});

// Create a Form Event
const formEvent = new FormEvent({
...req.body.form,
userId: user._id
});

// Save User in the database
user
.save()
.then(data => {
formEvent
.save()
.then(event => res.send(event))
.catch(err => {
res.status(500).send({
message: err.message
});
});
})
.catch(err => {
res.status(500).send({
message: err.message
});
});

有更好的方法来做这种事情吗?,因为我觉得这不是正确的方法,因为发送POST时,用户被保存然后形成,但是会发生什么如果 formEvent 中有错误,用户已保存,那么我无法再次发送 POST,因为用户已经存在。

谢谢。

最佳答案

您可以使用 Node.js Async wait 来完成

您需要在函数前添加async关键字,并在需要等待时使用await。另外,使用 try catch 可以更好地处理错误

// Add async keyword before function
async function () {
// Create a User
const user = new User({
...req.body,
_id: new mongoose.Types.ObjectId()
});
// Create a Form Event
const formEvent = new FormEvent({
...req.body.form,
userId: user._id
});
try {
var saveUser = await user.save()
var saveFormevenr = await formEvent.save()
return { saveUser, saveFormevenr };
} catch (err) {
return 'error occured';
}
}

引用:https://www.geeksforgeeks.org/using-async-await-in-node-js/

关于node.js - 保存多个模型 Mongoose ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57987722/

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