Я пытаюсь настроить свой дизайн MongoDB таким образом, чтобы была коллекция projects
и коллекция people
. Схема модели Project
содержит элемент _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
, на который ссылается тот же проект, который также является менеджером.
Знать, какой проект ссылается на этот документ, не проблема, я его где-нибудь найду, мне просто нужно знать, как выполнить запрос... возможно ли это?