Mongodb 错误:TypeError:user.insertOne不是使用mongoose的函数
我很难创建发送到MongoDB的路由。 当我返回user时,它返回完整的数据库。这适用于使用用户或“用户”。 用户是一个模型Mongodb 错误:TypeError:user.insertOne不是使用mongoose的函数,mongodb,mongoose,mongodb-query,mongoose-schema,mern,Mongodb,Mongoose,Mongodb Query,Mongoose Schema,Mern,我很难创建发送到MongoDB的路由。 当我返回user时,它返回完整的数据库。这适用于使用用户或“用户”。 用户是一个模型 let User=require('../models/User.model') 提前谢谢你 应该是这样的: let proposalArr = []; for (const key in req.body.proposal) { proposalArr.push({ uid: req.body.proposal[key].uid, clientEma
let User=require('../models/User.model')代码>
提前谢谢你 应该是这样的:
let proposalArr = [];
for (const key in req.body.proposal) {
proposalArr.push({
uid: req.body.proposal[key].uid,
clientEmail: req.body.proposal[key].clientEmail,
summary: req.body.proposal[key].summary,
terms: req.body.proposal[key].terms,
form: req.body.proposal[key].form
});
}
user.proposal = proposalArr;
user.save().............
不能对数据库查询结果使用.insertOne
,mongoose模型的功能是向集合插入新文档,而不是向对象插入新字段。您需要做的就像使用.js代码向json对象添加新字段一样,但mongoose将跟踪对象的更改&当您使用.save()
时,它可以使用所有这些更改更新集合中的文档
您可以在一次调用中完成此操作,而不是两次DB调用,请检查并尝试以下示例代码:
let proposalArr = [];
for (const key in req.body.proposal) {
proposalArr.push({
uid: req.body.proposal[key].uid,
clientEmail: req.body.proposal[key].clientEmail,
summary: req.body.proposal[key].summary,
terms: req.body.proposal[key].terms,
form: req.body.proposal[key].form
});
}
User.findByIdAndUpdate(
req.params.id,
{
proposal: proposalArr
},
{ new: true }
)
.then(user => {
if (!user) res.status(404).send("data is not found");
res.json(user);
})
.catch(err => res.status(400).json("Error: " + err));
应该是这样的:
let proposalArr = [];
for (const key in req.body.proposal) {
proposalArr.push({
uid: req.body.proposal[key].uid,
clientEmail: req.body.proposal[key].clientEmail,
summary: req.body.proposal[key].summary,
terms: req.body.proposal[key].terms,
form: req.body.proposal[key].form
});
}
user.proposal = proposalArr;
user.save().............
不能对数据库查询结果使用.insertOne
,mongoose模型的功能是向集合插入新文档,而不是向对象插入新字段。您需要做的就像使用.js代码向json对象添加新字段一样,但mongoose将跟踪对象的更改&当您使用.save()
时,它可以使用所有这些更改更新集合中的文档
您可以在一次调用中完成此操作,而不是两次DB调用,请检查并尝试以下示例代码:
let proposalArr = [];
for (const key in req.body.proposal) {
proposalArr.push({
uid: req.body.proposal[key].uid,
clientEmail: req.body.proposal[key].clientEmail,
summary: req.body.proposal[key].summary,
terms: req.body.proposal[key].terms,
form: req.body.proposal[key].form
});
}
User.findByIdAndUpdate(
req.params.id,
{
proposal: proposalArr
},
{ new: true }
)
.then(user => {
if (!user) res.status(404).send("data is not found");
res.json(user);
})
.catch(err => res.status(400).json("Error: " + err));
非常感谢。工作非常好。是因为在查询结果中使用了Inserton。谢谢。工作非常好。是因为对查询结果使用了Inserton。