让我们开始吧,我有2个模型
-Users
-Forms
我输入的路由类型为POST /form-event
,我想发送这些字段
first_name,
last_name,
form: {}
first_name
和last_name
属于Users Model
,而form
属于Forms Model
。
好的,所以我的问题是尝试将人体数据保存到这两个模型中,
// 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
。
谢谢。
答案 0 :(得分:1)
您可以使用Node.js异步等待来完成
您需要在功能之前添加 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/