Схема мангуста с требуемыми свойствами и смешанными свойствами

#mongoose #mongoose-schema

Вопрос:

У меня есть следующее определение схемы:

 const MySchema = new Schema({
  someProperty: { type: String, required: true }
},{
  strict: false
});
 

Я хотел бы включить и другие свойства, поэтому я использую строгую ложь. Однако я предполагаю, что это относится только к конструктору создания, поскольку позволяет использовать другие поля.

При попытке доступа к другим свойствам с помощью точечной или массивной нотации он всегда будет возвращать неопределенное значение. т.е.

 myDocument.someProperty // This works
myDocument.foo // always returns undefined, even if there is a value in the database
 

Известные обходные пути:

  1. Вызовите ToObject(). Конечно, я знаю, что могу это сделать, но хотел бы иметь дело с объектами мангустов, если это возможно.
  2. Используйте get(‘foo’). Это тоже работает, но не тривиально, легко ошибиться и забыть использовать.
  3. Используйте смешанный тип. Я теряю проверку и тип свойств в схеме, которую я хочу определить. Это приводит меня к написанию собственного пользовательского валидатора для этих свойств.

Пожалуйста, скажите мне, что я что-то упускаю. Есть ли какой-либо способ объединить определение некоторых свойств в схеме и разрешить все остальные?