Я использую MongoDB и Пн goose.
Предположим, у меня есть следующая схема.
const notificationMetaSchema = new mongoose.Schema({
listingId: { type: mongoose.Schema.Types.ObjectId },
});
const notificationSchema = new mongoose.Schema({
category: { type: String, required: true, enum: [ "categoryA", "categoryB" ] },
meta: notificationMetaSchema,
});
Я хочу, чтобы мое поле "перечисление" требовалось только тогда, когда "категория" "field is" categoryA ".
Эта проверка в идеале существует как при создании документа, так и при его обновлении.
Как создать собственный валидатор для достижения этого эффекта?
РЕДАКТИРОВАТЬ
Я попробовал следующее:
const notificationSchema = new mongoose.Schema({
category: { type: String, required: true, enum: [ "categoryA", "categoryB" ] },
meta: {
listingId: {
type: mongoose.Schema.Types.ObjectId,
required: function () {
return [
"categoryA",
].includes(this.category);
}
},
},
});
Однако, когда я вызываю следующий запрос:
Notification.findOneAndUpdate({}, $set: { category: "categoryA", meta: {} }).exec();
Ошибка проверки отсутствует