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帐户