填充虚拟 - 填充其引用的现有数组。

时间:2017-01-27 22:45:51

标签: node.js mongodb mongoose

是否可以使用mongoose的Populate Virtuals来填充它引用的值数组?

用户模型

var userSchema = new mongoose.Schema({
auth_key: {type: String},
channels: [{
    name: {type: String},
    last_access: { type: Date, default: Date.now },
    status: {type: String, default: false },
    new_messages: {type: Number},
    user_channel_group: {type: String}
}]
}, {
toJSON: {
    virtuals: true
}
});

userSchema.virtual('channels.details', {
ref: 'channel',
localField: 'channels.name',
foreignField: 'name'
});

var user = mongoose.model('user', userSchema, 'user');

频道模型

var channelSchema = new mongoose.Schema({
    name: {type: String, required: true},
    members: [{ type: String, required: true }],
    displayName: {type: String},
    type: {type: Number},
    create_at: {type: Date, default: Date.now}
});

var channel = mongoose.model('channel', channelSchema, 'channel');

我正在使用的查询我希望虚拟媒体在用户订阅的频道旁边显示每个频道的频道详细信息。所以像这样..

[{
    "_id": "588a82ff7fe89686fd2210b0",
    "channels": [{
        "details": {
            "_id": "588a80fd7fe89686fd2210a8",
            "name": "channel1",
            "members": []
        },
        "name": "channel1"
    }, {
        "details": {
            "_id": "588a80fd7fe89686fd2210a9",
            "name": "channel2",
            "members": []
        },
        "name": "channel2"
    }],
    "id": "588a82ff7fe89686fd2210b0"
}
    ...
]

我的查询是..

user.find({}).populate('channels.details').exec()

0 个答案:

没有答案