Node.js 如何基于引用/模型填充字段?

Node.js 如何基于引用/模型填充字段?,node.js,mongodb,mongoose,mongodb-query,mongoose-schema,Node.js,Mongodb,Mongoose,Mongodb Query,Mongoose Schema,我有两个用户模式: UserSchema1=newmongoose.Schema({ 名字:{ 类型:字符串 } }) UserSchema2=新的mongoose.Schema({ 电邮:{ 类型:字符串 } }) ChatMessageSchema=newmongoose.Schema({ 森德里德:{ 类型:mongoose.Schema.Types.ObjectId, refPath:'onModel', 必填项:true }, 关于模型:{ 类型:字符串, 要求:正确, 枚举:['us

我有两个用户模式:

UserSchema1=newmongoose.Schema({
名字:{
类型:字符串
}
})
UserSchema2=新的mongoose.Schema({
电邮:{
类型:字符串
}
})
ChatMessageSchema=newmongoose.Schema({
森德里德:{
类型:mongoose.Schema.Types.ObjectId,
refPath:'onModel',
必填项:true
},
关于模型:{
类型:字符串,
要求:正确,
枚举:['userSchema1','userSchema2']
},
信息:{
类型:字符串,
必填项:true
}
})
现在,我需要填充所有聊天信息。我需要以下结果:

[
    {
        senderId:{
            firstName or email
        },
        onModel: userSchema1 / userSchema2,
        message: "message"
    },
    {

    }, ...
]
也就是说,如果发送者是UserSchema1,那么它应该填充firstName,如果它是UserSchema2,那么它应该填充email。我无法填充所有字段,因为每个集合中有20多个字段


简而言之,如果是UserSchema1,它应该只填充firstName,如果是UserSchema2,它应该只填充email。

我想你可以用这个模式聊天,它比你的模式好 使用用户Id和Id获取用户数据

   MessageSchema = new mongoose.Schema({
      from: {
        type: string,
        required: true,
      },
      to: {
        type: string,
        required: true,
      },
      time: {
        type: Date,
        default: Date.now(),
      },
      message: {
        type: string,
        required: true,
      },
    });


ChatSchema = new mongoose.Schema({
        firstUserId:{
            type: mongoose.Schema.Types.ObjectId,
            required: true,
        },
        secondUserId:{
            type: mongoose.Schema.Types.ObjectId,
            required: true,
        },
        Chat: MessageSchema,
})
数据也将如此

[
  {
    firstUserId: "hjakdsf323275lks",
    secondUserId: "asdfe2342232aas",
    Chat: [
      {
        from: "hjakdsf323275lks",
        to: "asdfe2342232aas",
        time: "18/7/2020 20:06:09",
        message: "Hi ",
      },
      {
        from: "asdfe2342232aas",
        to: "hjakdsf323275lks",
        time: "18/7/2020 21:07:09",
        message: "hello ",
      },....
    ],
  },
];

我提到的模式只是实际模式的一部分。该应用程序已经开发,我需要解决这个问题。是否有任何方法可以在不更改模式的情况下解决此问题?任何帮助都将不胜感激。没问题,只要你能给我完整的模式来修复它,我想共享完整的模式会让事情变得更加混乱。我共享的模式涵盖了所有必需的细节。让我知道你到底需要什么?因为我不了解你的模式,我现在想知道所有模式中的流程如果你想联系我这个我的Github帐户