mongoose 如何重塑Populated Virtual文档?

我有一个Message Schema跟一个User Schema,我想要在message文档中Populated Virtual一个user对象,然后重塑user对象。

User Schema

const userSchema = new Schema({
    'username': String,
    'password': String,
});
module.exports = model('User', userSchema, 'users');

Message Schema

const sendMessageSchema = new Schema({
    // 消息发送者UID。
    'msgFrom': {
        type: Schema.Types.ObjectId,
    },
    // 消息内容。
    'msgContent': String,
    // ...
}, {
    toJSON: { virtuals: true },
    toObject: { virtuals: true },
});

sendMessageSchema.virtual('user', {
    ref: 'User',
    localField: 'msgFrom',
    foreignField: '_id',
    justOne: true,
    // getters: true,
    // get: function() {
    //     如何在这访问User的字段,有比先把User文档 Populated 给 msgFrom 字段再取的方法吗
    //     return {
    //         '_id': this._id,
    //         'name': this.username,
    //         'avatar': `https://dummyimage.com/200x200/00E67D/000.jpg&text=${this.username}`,
    //     };
    // },
});
阅读 2k
1 个回答
sendMessageSchema.virtual('user', {
    ref: 'User',
    localField: 'msgFrom',
    foreignField: '_id',
    justOne: true,
    // getters: true,
    // get: function(value, virtual, doc) {
    //     这里的value参数就是User文档
    //     return {
    //         '_id': this._id,
    //         'name': this.username,
    //         'avatar': `https://dummyimage.com/200x200/00E67D/000.jpg&text=${this.username}`,
    //     };
    // },
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进