我试图通过nodejs在MongoDB中插入嵌入式文档。这是嵌入式文档的架构
var patientSchema = new mongoose.Schema({
status: {type: String},
message:{type: String},
statusCode:{type: Number},
user: [{
pname: {type : String },
email: {type : String },
password: {type : String },
mobile: {type : String},
otp:{type: Number},
age: {type : String }
}]
})
这是插入代码
router.post('/panel/register', function(req, res){
console.log(req.body.mobile_number+req.body.email);
new patient({
status: "ok",
message:"success",
statusCode:"201",
'user.$.pname': req.body.name,
'user.$.password': req.body.password,
'user.$.email': req.body.email,
'user.$.mobile': req.body.mobile_number
}).save(function(err, doc){
if(err) res.json(err);
else {
res.json({"doc ":doc});
}
})
})
但每当我尝试使用此代码插入数据时,它会向我显示此错误
{
"code": 11000,
"index": 0,
"errmsg": "E11000 duplicate key error index: rhc.patients.$mobile_1 dup key: { : null }",
"op": {
"status": "ok",
"message": "success",
"statusCode": 201,
"_id": "59f38e4d94fff613fc8c4979",
"user": [],
"__v": 0
}
}
因为我理解这个错误是因为这不是映射电子邮件的价值,移动在用户内部,有人可以帮助解决它,我想我插错的方式,请帮助
答案 0 :(得分:0)
修改强>
为清楚起见:问题实际上不是语法,而是在没有更新数据库的情况下删除的唯一约束。您可以详细了解here和here。
原始回答:
你可以这样做:
router.post('/panel/register', function(req, res){
console.log(req.body.mobile_number+req.body.email);
new patient({
status: "ok",
message:"success",
statusCode:"201",
user: [{
pname: req.body.name,
password: req.body.password,
email: req.body.email,
mobile: req.body.mobile_number
}]
}).save(function(err, doc){
if(err) res.json(err);
else {
res.json({"doc ":doc});
}
})
})
这将在用户数组中创建用户对象。你确定它不仅仅是一个对象上的数组吗?从模型和控制器中删除[]使其成为普通对象。