我在設置適當的會話模式時遇到問題,該模式存儲對話和/或消息的讀/未讀標誌。我希望當前登錄的用戶能夠看到有多少會話中有新消息。目前,我的模式(使用imple-模式)看起來有點像這樣:流星/ MongoDB對話模式
Schema = {};
Schema.ConversationMessageRead = new SimpleSchema(
{
"userId": {
type: String
},
"createdAt": {
type: Date
}
}
);
Schema.ConversationMessage = new SimpleSchema(
{
"userId": {
type: String
},
"message": {
type: String,
optional: true
},
"read": {
type: [Schema.ConversationMessageRead],
optional: true
},
"createdAt": {
type: Date
}
}
);
Schema.Conversation = new SimpleSchema(
{
"participants": {
type: [String],
optional: false
},
"messages": {
type: [Schema.ConversationMessage],
optional: true
},
"deleted": {
type: Boolean,
optional: false,
defaultValue: false
},
"createdAt": {
type: Date
}
}
);
Conversations = new Mongo.Collection("conversations");
Conversations.attachSchema(Schema.Conversation);
我這背後的想法是更新所有消息的子文檔read
財產與當他們打開了一個對話的當前用戶ID。然後我很快發現你現在不能update multiple subdocuments。
我願意改變對話系統的管理方式,如果有人有一個想法,以適當的方式來實現這一點。還有一件事要記住,我想保持它的反應,這意味着我不得不查詢這個集合,而不使用聚合函數。要做到這一點
其實,我最初是按照你在最後一段中提到的方式構建系統的。儘管我很難查詢數據。我可能會重新訪問它。 – SeanWM