繁体   English   中英

创建一个独立的用户架构,并使用Mongoose / MongoDB将其嵌入到消息架构中?

[英]Create an independent user schema and also embed it in a message schema with Mongoose/MongoDB?

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

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

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

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

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

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

对于多个嵌入式用户,这是否代表不同的“查看”和“读取”条件

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 );

因此,仍然嵌入的中间模式定义具有与属性的信息有关,这些属性与其特定的数据“视图”相关,并且将某些信息保留在适当的用户身上。

将“用户名”保留在此上下文中是有意义的,因为您将经常使用该用户名,否则就不想从外部模型中填充它。 但是,实际上可能在其上具有比显示的更多字段的“整个”用户对象,每次都嵌入实际上没有多大意义。

您仍然保留引用,因此,如果需要进一步详细说明,可以轻松地从_id引用该信息,该_id将针对外部模式针对“用户”保留。

同样,所有这些属性都正确地定义为“收件人”部分中每个用户的数组元素成员,这确实是您想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM