Mongoose:无法填充自引用数组,返回空数组

时间:2013-08-06 15:06:04

标签: node.js mongodb mongoose

我正在尝试使用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

填充物似乎有问题,但我找不到它。 如果有人可以帮助我或指出我正确的方向来阅读这个我会非常感激。

0 个答案:

没有答案