2016-08-19 51 views
0

我的談話模式,這將使用戶的私人信息,每兩個用戶可以在因此ONE談話,在談話收件人應該是唯一的獨特Array對象

/** Users in this conversation**/ 
var usersSchema = new Schema({ 
    id: { 
     type: Schema.Types.ObjectId, 
     index: true, 
     required: true, 
     ref: 'User' 
    }, 

    name: { 
     type: String, 
     required: true 
    } 
}); 

/** For each message we will have the below **/ 
var messagesSchema = new Schema({ 
    from: { 
     type: Schema.Types.ObjectId, 
     required: true 
    }, 
    content: { 
     type: String, 
     required: true 
    }, 
    read: { 
     type: Boolean, 
     default: false 
    } 
}, { 
    timestamps: true 
}); 


/** Now all together inside the thread schema **/ 
var conversationsSchema = new Schema({ 

    users: { 
     type: [usersSchema], 
     required: true, 
     index: true, 
     unique: true 
    }, 
    messages: [messagesSchema], 


}, { 
    timestamps: true 
}); 

var Conversation = mongoose.model('Conversation', conversationsSchema); 
module.exports.Conversation = Conversation; 

的唯一途徑我可以想到的是通過查看對話模式中users數組內的ID來手動檢查。不過,我認爲貓鼬有辦法做到這一點。

回答

0

您可以在您的userSchema中添加unique : true以僅允許對話中的唯一用戶。

/** Users in this conversation**/ 
var usersSchema = new Schema({ 
    id: { 
     type: Schema.Types.ObjectId, 
     index: true, 
     required: true, 
     unique : true, //add unique behaviour here 
     ref: 'User' 
    }, 

    name: { 
     type: String, 
     required: true 
    } 
}); 
+0

我想要在所有對話中唯一的兩個用戶。 – Othman