用自己的ObjectId抛出的mongoose自引用:强制转换为ObjectId失败

时间:2014-09-24 13:40:20

标签: node.js mongodb mongoose

我正在使用nodejs,mongoose,我试图构建一个包含对父亲的引用的shema。 Parent应该是对DataType的引用。

var DataTypeSchema = new Schema({
    _id: String,
    label: { type: String, required: true },
    comment: { type: String },
    url: { type: String, required: true },
    parent: { type: Schema.Types.ObjectId, ref: 'DataType' },
    values: []
});

var DataType = mongoose.model('DataType', DataTypeSchema);
module.exports.DataType = DataType;

每个DataType都有自己的ID (不是由mongo生成的),我认为这是一个导致问题的地方。它抛出了一个错误强制转换为objectid失败的值" Number"在路径" parent" ,其中Number是具有ID的对象" Number"已保存在DB中。

由于

2 个答案:

答案 0 :(得分:2)

parent引用的类型必须与其引用的模型中_id的类型匹配。因此,Schema.Types.ObjectId代替String而不是... parent: { type: String, ref: 'DataType' },

{{1}}

答案 1 :(得分:0)

你可以试试这个

parent: [ this ]

它有效