我正在尝试使用Mongoose设置MongoDB数据库,我似乎无法使自填充数组工作。看看代码,这样你就可以得到一个更好的想法:
以下是型号代码:
var Schema = _MONGOOSE.Schema;
var ModuleFields = Schema({
name: {type : String, default : '', trim : true},
label: {type : String, default : '', trim : true},
required: {type : Boolean, default: false},
type: {type : String, default: ''},
multiple: {type : Boolean, default: true},
predet: {type : Object, default: null},
fields:[{type: Schema.Types.ObjectId, ref:'ModuleFields'}],
createdAt : {type : Date, default : Date.now},
deletedAt : {type : Date}
});
ModuleFields.method({
uploadAndSave: function (cb) {
this.save(cb);
}
});
ModuleFields.static({
load: function (pName, cb) {
this.findOne({name : pName})
.populate('fields')
.exec(cb)
}
});
_MONGOOSE.model('ModuleFields', ModuleFields);
我在模型中添加了一些数据,没有错误。 这是我在控制台上得到的内容:
> db.getCollectionNames()
[ "modulefields", "system.indexes" ]
> db.modulefields.findOne({name: 'video'})
{
"__v" : 1,
"_id" : ObjectId("52010bc4b2212caa01000001"),
"createdAt" : ISODate("2013-08-06T14:44:20.149Z"),
"deletedAt" : null,
"fields" : [
ObjectId("52010bd3b2212caa01000003")
],
"label" : "videos",
"multiple" : true,
"name" : "video",
"predet" : null,
"required" : true,
"type" : "custom"
}
所以似乎没问题,数组中有引用。 当我查找它返回它的元素时,但是数组是空的,这里是它找到的数据对象的console.log:
Object {id: "52010bc4b2212caa01000001", name: "video", label: "videos", multiple: true, type: "custom"…}
fields: Array[0]
id: "52010bc4b2212caa01000001"
label: "videos"
multiple: true
name: "video"
required: true
type: "custom"
__proto__: Object
填充物似乎有问题,但我找不到它。 如果有人可以帮助我或指出我正确的方向来阅读这个我会非常感激。