簡體   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