gpt4 book ai didi

javascript - 使用 Mongoose/MongoDB 创建一个独立的用户模式并将其嵌入到消息模式中?

转载 作者:行者123 更新时间:2023-12-03 12:21:13 25 4
gpt4 key购买 nike

我有一个用户架构和一个消息架构,它们当前是独立的,但应该是相关的。

var schemaUser = new Schema({
username: String,
encryptPass: String,
created: Date
});

var schemaMessage = new Schema({
from: String,
to: [String],
message: String,
created: Date
});

是否可以独立于消息架构创建用户架构,然后将其嵌入到消息架构的“to:”字段内的数组中?

var schemaMessage = new Schema({
from: String,
to: [schemaUser],
message: String,
created: Date
});

从那里开始,“收件人:”字段中的每个嵌入式用户文档是否可以具有不同的“ View :”嵌入式文档以及与每条消息的每个用户相关的其他字段?

这是否代表多个嵌入式用户的不同“查看”和“读取”标准:

var schemaMessage = new Schema({
from: String,
to: [
{
schemaUser
},
{
view: {
inbox: Boolean,
outbox: Boolean,
archive: Boolean
}
},
{
read: {
marked: Boolean,
datetime: Date
},
}
],
message: String,
created: Date
});

最佳答案

您似乎想要一些基本上抽象“用户”的东西,其中包含一些特定于该用户在消息上的状态的自定义属性:

var schemaUser = new Schema({
username: String,
encryptPass: String,
created: Date
});

var schemaUserMessage = new Schema({
user: { "type": Schema.ObjectId, "ref": "User" }
username: String,
view: {
inbox: Boolean,
outbox: Boolean,
archive: Boolean
},
read: {
marked: { "type": Boolean, default: false },
date: Date
}
});

var schemaMessage = new Schema({
from: String,
to: [schemaUserMessage],
message: String,
created: Date
});

var User = mongoose.model( "User", userSchema );
var Message = mongoose.model( "Message", messageSchema );

因此,仍然嵌入的中间模式定义具有与其特定数据“ View ”相关的属性信息,并保留有关适当用户的一些信息。

“用户名”保持嵌入在此上下文中是有意义的,因为您将经常使用它并且不希望从外部模型填充。但是“整个”用户对象(实际上可能比显示的字段多)每次嵌入都没有多大意义。

您仍然保留引用,因此如果您需要获取更多详细信息,可以轻松地从 _id 引用该信息,该信息将针对外部架构的“用户”保留。

此外,所有这些属性都在“to”部分中正确定义为每个用户的数组元素的成员,这正是您想要的。

关于javascript - 使用 Mongoose/MongoDB 创建一个独立的用户模式并将其嵌入到消息模式中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24442999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com