Mongoose:使用带引用的模式保存带有嵌入文档的JSON

时间:2015-12-11 16:22:39

标签: json node.js mongodb mongoose

大家。我试图像这样保存一个JSON(RecordNameVersion)

{   "created":"2015-11-10 15:47:41.107Z",
    "id_user" : "01",
    "version" : "1",
    "RecordName" : {"status" : "1", "name": "Paul"}
}

在我的节点应用程序中,我有这个用于模式

var RecordNameVersion = new Schema({
    _id : Number,
    created : {type: Date, default: Date.now},
    id_user : String,
    version : { type: Number, min: 0 },
    RecordName : {type: Schema.Types.ObjectId, ref: 'TaxonRecordName'}
});

var RecordName = new Schema({
trn_version : { type: Number, ref: 'RecordNameVersion' },
status : String,
name : String
});

当我尝试发布Json时,会生成此错误。

"message": "RecordNameVersion validation failed",
"name": "ValidationError",

可以一次性保存所有JSON吗?或者是否需要嵌入Record Name的架构? 我更喜欢RecordNameVersion和RecordName的不同集合。

或者我应该将RecordNameVersion的id放在RecordName的json中

1 个答案:

答案 0 :(得分:0)

保存RecordNameVersion时出错,告诉您字段值

RecordName

想成为一个参考,而不是一些实际的对象。因此将其参考资料合成为:

{
    "_id": mongoose.Types.ObjectId("123456789000")
    "created":"2015-11-10 15:47:41.107Z",
    "id_user" : "01",
    "version" : "1",
    "RecordName" : mongoose.Types.ObjectId("123456789055")
}

然后相应的RecordName保存可以是:

{
    "_id": mongoose.Types.ObjectId("123456789055")
    "status":"1",
    "name" : "Paul",
    "version" : "1",
    "trn_version" : mongoose.Types.ObjectId("123456789000")
}

注意两个文档中_id字段的值