У меня есть следующая схема:
const contentSchema = new Schema({
name: {
type: String,
required: true
},
type: {
type: String,
required: true
},
value: {
type: String,
required: true
}
});
const contentArraySchema = new Schema({
contentArray: [contentSchema]
});
const pageSchema = new Schema({
contents: [contentSchema]
});
Я бы хотел добавить смесь объектов и массивов в pageSchema. Если у меня есть массив, я бы хотел заполнить его объектами contentSchema, а затем добавить его в массив полей содержимого pageSchema. Если у меня нет массива, я бы просто хотел добавить объект contentSchema в массив полей содержимого pageSchema.
Я только собирался использовать смешанный тип схемы, но я не уверен, каким будет лучший способ сделать это и как это повлияет на базовый поиск в базе данных.
Я тоже думал о том, чтобы сделать что-то похожее на это сообщение Здесь :
pageSchema.pre('validate', function (next) {
if (type === 'array') {
//use content array schema
} else {
//use regular content schema
}
next()
});
Но я не совсем уверен, какая лучшая практика для чего-то подобного. Надеюсь, кто-то имеет некоторый опыт в этом и может помочь. Спасибо.