Схема Мангуста или отдельный объект или массив объектов в зависимости от условия - PullRequest
0 голосов
/ 05 июня 2019

У меня есть следующая схема:

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()
});

Но я не совсем уверен, какая лучшая практика для чего-то подобного. Надеюсь, кто-то имеет некоторый опыт в этом и может помочь. Спасибо.

...