#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
Известные обходные пути:
- Вызовите ToObject(). Конечно, я знаю, что могу это сделать, но хотел бы иметь дело с объектами мангустов, если это возможно.
- Используйте get(‘foo’). Это тоже работает, но не тривиально, легко ошибиться и забыть использовать.
- Используйте смешанный тип. Я теряю проверку и тип свойств в схеме, которую я хочу определить. Это приводит меня к написанию собственного пользовательского валидатора для этих свойств.
Пожалуйста, скажите мне, что я что-то упускаю. Есть ли какой-либо способ объединить определение некоторых свойств в схеме и разрешить все остальные?