我试图以有一个projects
集合和一个people
集合的方式设置我的 MongoDB 设计。Project
模型架构包含一个_people
引用模型的项目People
。(相对于 People 模型有一个字段来引用他/她所属的项目。它需要是这样的)
每当在容器中创建新文档时,我都需要运行验证people
,即每个项目只能有一个经理。如果我可以对模式中的元素验证执行查询,这将非常容易,但我不相信这是可能的......
这是当前模型的架构People
:
const peopleSchema = new Schema( {
name: {
type: Schema.Types.String,
required: true,
minlength: 3,
maxlength: 25,
trim: true,
select: true
},
isManager: {
type: Schema.Types.Boolean,
default: false,
validate: {
validator: function ( v ) {
// How can I check if there are any existing `people` documents with the
// `isManager` set to true, which are referenced by the same project.
// If I can return a promise from here, then I can just execute a query and verify the results
},
message: 'There can be only one manager per each group'
}
}
})
正如您在isManager.validate.validator
函数中看到的那样,我注意到如果此文档isManager
设置为 true,我需要找到一种方法来检查是否没有person
同一个项目引用的文档也是经理。
知道哪个项目引用了这个文档不是问题,我会在某个地方找到它,我只需要知道如何运行查询.. 这可能吗?