Node.js mongoose如何在单个路由中保存多个集合
我想在一条快速路线中保存多个集合。我在我的express route文件中使用以下代码Node.js mongoose如何在单个路由中保存多个集合,node.js,express,mongoose,Node.js,Express,Mongoose,我想在一条快速路线中保存多个集合。我在我的express route文件中使用以下代码 const userinfo = require('../models/userinfo'); const userdtls = require('../models/userdtls'); router.post('/add', function(req, res) { mongoose.connect(config.DB,{ useNewUrlParser: true }, function (er
const userinfo = require('../models/userinfo');
const userdtls = require('../models/userdtls');
router.post('/add', function(req, res) {
mongoose.connect(config.DB,{ useNewUrlParser: true }, function (err) {
if (err) throw err;
let newuserdtls = new userdtls({
userid: '1001',
username: req.body.username
})
newuserdtls.save()
.then(result => {
res.json(result);
console.log('successfully inserted');
})
.catch(err => {
res.json(err)
console.log('inserted failed',err);
})
let newuserinfo = new userinfo({
userid: '1001',
username: req.body.username,
gender: req.body.gender,
class: req.body.class,
status: req.body.status
})
newuserinfo.save()
.then(result => {
res.json(result);
console.log('successfully inserted');
})
.catch(err => {
res.json(err)
console.log('inserted failed',err);
})
})
})
我想在这两个模型中插入单个事务。两者都应成功插入。如果一个失败了,另一个也应该失败。我还收到“ERR\u HTTP\u HEADERS\u SENT:在发送到客户端后无法设置头”使用此代码,但这可能是因为res.send两次。请让我知道如何将两个保存和响应合并为一个
谢谢您可以在
中保存第二条记录,然后在第一条记录的块中保存
或者有更好的方法使用async/await
和try/catch
:
router.post('/add', async function(req, res) {
try {
await mongoose.connect(config.DB,{ useNewUrlParser: true });
let newuserdtls = new userdtls({
userid: '1001',
username: req.body.username
})
await newuserdtls.save();
let newuserinfo = new userinfo({
userid: '1001',
username: req.body.username,
gender: req.body.gender,
class: req.body.class,
status: req.body.status
})
await newuserinfo.save();
res.json(YOUR_RESULT);
} catch(err) {
// Handle error here
}
})
我尝试了建议的解决方案,但出现了错误。等待mongoose.connect(config.DB,{useNewUrlParser:true});^SyntaxError:await仅在async函数中有效您是否尝试在函数(req,res)
之前添加async?我的错误。我忘了把async放在函数之前。谢谢。它现在正在工作。