如何根据参考/模型填充字段?
Posted
技术标签:
【中文标题】如何根据参考/模型填充字段?【英文标题】:How to populate fields based on references/models? 【发布时间】:2020-11-08 01:33:49 【问题描述】:我有两个用户模式:
UserSchema1 = new mongoose.Schema(
firstName:
type: String
)
UserSchema2 = new mongoose.Schema(
email:
type: String
)
ChatMessageSchema = new mongoose.Schema(
senderId:
type: mongoose.Schema.Types.ObjectId,
refPath: 'onModel',
required: true
,
onModel:
type: String,
required: true,
enum: ['userSchema1', 'userSchema2']
,
message:
type: String,
required: true
)
现在,我需要填充所有聊天消息。我需要如下结果:
[
senderId:
firstName or email
,
onModel: userSchema1 / userSchema2,
message: "message"
,
, ...
]
也就是说,如果发件人是 UserSchema1,那么它应该填充 firstName,如果它是 UserSchema2,它应该填充电子邮件。我无法填充所有字段,因为每个集合中有 20 多个字段。
简而言之,如果是 UserSchema1,它应该只填充 firstName,如果是 UserSchema2,它应该只填充电子邮件。
【问题讨论】:
【参考方案1】:我猜您可以使用此架构进行聊天,它比您的架构更好 使用用户 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 ",
,....
],
,
];
【讨论】:
我提到的架构只是实际架构的一部分。该应用程序已经开发,我需要解决这个问题。有什么办法,我可以在不更改架构的情况下解决这个问题? PS:任何帮助将不胜感激。 没问题,只要你能给我完整的架构来修复它 我想共享完整的架构会让事情变得更加混乱。我共享的架构涵盖了所有必需的细节。告诉我你到底需要什么? 因为我不了解你的架构,所以我现在想知道所有架构中的流程 如果你想联系我这个我的 Github 帐户github.com/ha77an以上是关于如何根据参考/模型填充字段?的主要内容,如果未能解决你的问题,请参考以下文章