【问题标题】:Mongoose doesn't create model object with arrayMongoose 不使用数组创建模型对象
【发布时间】:2016-03-07 16:18:57
【问题描述】:

我正在做一个项目,我有以下猫鼬模式:

module.exports = mongoose.model('Env', {
    name : {type : String, default: ''},
    services: [ServiceAddress]
});

module.exports = mongoose.model('ServiceAddress', {
    serviceId : {type : ObjectId},
    address: {type: String}
});

我正在尝试更新现有的“环境”文档,其中包含一个空的“服务”数组。

router.put('/api/env', function(req, res, next) {
    var env = new Environment(req.body);
    env.save(function(err, updated){
        if (err){
            res.send(err);
        }
        res.json(updated);
    });
});

req.body 内容为:

{
   _id: "56dd26a6618c1b983d5bada6", 
   name: "Test Drive"
   services: [{_id: "56dc6e385fb0b038241d3399", address: "11"}, {_id:     "56dc6e595fb0b038241d339a", address: ""}]
}

但是DB中的结果是(只推送了ID):

"services" : [ { "_id" : ObjectId("56dc6e385fb0b038241d3399") }, { "_id" : ObjectId("56dc6e595fb0b038241d339a") }

有什么想法吗?

谢谢

【问题讨论】:

    标签: node.js mongoose


    【解决方案1】:

    请用下面的sn-p试试

    var serviceSchema = {
        serviceId : {type : ObjectId,required: false},
        address: {type: String,required: false}
    };
    // added so that new _id field is not added when object is pushed in array
    serviceSchema  = 'new Schema('+serviceSchema +',{_id:false})';
    
    module.exports = mongoose.model('Env', {
        name : {type : String, default: ''},
        services: [serviceSchema], default:[],
    });
    

    谢谢

    【讨论】:

      猜你喜欢
      • 2014-04-10
      • 2018-02-28
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多