【发布时间】:2017-05-03 05:05:06
【问题描述】:
我想创建一个数据库模式,其中一个文档不能包含与另一个文档相同的数组。所以,假设我有架构 conversations:
var ConversationSchema = new Schema({
name: String,
participants: {
type: [{
type: Schema.Types.ObjectId,
ref: 'User'
}]
}
});
现在,如果我与相同的参与者创建两个对话,我如何验证这一点,以便第二个失败,而第三个不会?
var conversation1 = new Conversation({
name: "Hello",
participants: ['12345', '09876']
});
var conversation2 = new Conversation({
name: "World",
participants: ['12345', '09876']
});
var conversation3 = new Conversation({
name: "Group chat",
participants: ['12345', '09876', '13579']
});
conversation1.save(); // Valid
conversation2.save(); // Invalid - conversation already exists
conversation3.save(); // Valid
【问题讨论】:
-
这似乎是业务逻辑而不是模式验证