使用nodejs

时间:2017-10-27 20:02:30

标签: node.js express mongoose mlab

我试图通过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
    }
}

因为我理解这个错误是因为这不是映射电子邮件的价值,移动在用户内部,有人可以帮助解决它,我想我插错的方式,请帮助

1 个答案:

答案 0 :(得分:0)

修改

为清楚起见:问题实际上不是语法,而是在没有更新数据库的情况下删除的唯一约束。您可以详细了解herehere

原始回答:

你可以这样做:

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});
            }
        })
    })

这将在用户数组中创建用户对象。你确定它不仅仅是一个对象上的数组吗?从模型和控制器中删除[]使其成为普通对象。