猫鼬自我参考没有填充

时间:2014-11-16 17:28:37

标签: node.js mongoose mongoose-populate

我有像这样的猫鼬自我引用:

var wordSchema = new mongoose.Schema({
        content : String,
        country: [{type: mongoose.Schema.Types.ObjectId, ref: 'Country'}],
        trad: {
            words: [{
                _id: { type: mongoose.Schema.Types.ObjectId, ref: 'Word' }

            }]
        }

    });

我想用find找回我的模型的属性内容:

 Word.find({ content:regex, country:'5464dcee1874048e2c623389' }).populate('trad.words').exec(function (err, words) {
        if (!err) {
            res.json(words);
        } else {
            console.log(err);
        }
    });

以下是我得到的结果:

_id: "5468d91c6481cd063033a4d0"
content: "content"
country: [5464ddd226e63fad2c5aa053]
trad: {words:[{_id:5468d91c6481cd063033a4cf}]}
words: [{_id:5468d91c6481cd063033a4cf}]
0: {_id:5468d91c6481cd063033a4cf}
_id: "5468d91c6481cd063033a4cf"

我不明白为什么它没有在subDocument字中返回我的其他属性.. 你能帮我理解我做错了吗?

谢谢,

马克西姆

1 个答案:

答案 0 :(得分:0)

有多个传统?因此,设置路径填充('countries trad.words'),如下所示:

var wordSchema = new mongoose.Schema({
        content : String,
        countries: [{type: mongoose.Schema.Types.ObjectId, ref: 'Country'}],
        trad: [{
            _id: mongoose.Schema.Types.ObjectId,
            words: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Word' }]
        }]
    });

否则,您不需要传统字段。因此,设置路径填充('countries trad_words'),如下所示:

var wordSchema = new mongoose.Schema({
        content : String,
        countries: [{type: mongoose.Schema.Types.ObjectId, ref: 'Country'}],
        trad_words: [{type: mongoose.Schema.Types.ObjectId, ref: 'Word'}]
    });
相关问题