Насправді "Змішаний" ( Schema.Types.Mixed
) режим, як видається, робить саме це в Мангусті ...
він приймає об'єкт JS без схеми , вільний від форми, так що все, що ви можете кинути на нього. Здається, ви повинні вручну заощадити цей об’єкт вручну, але це здається справедливим компромісом.
Змішаний
Схема «що йде», її гнучкість приходить до компромісу, який важче підтримувати. Змішаний доступний через
Schema.Types.Mixed
або через передачу порожнього об'єкта в буквальному сенсі. Наступні:
var Any = new Schema({ any: {} });
var Any = new Schema({ any: Schema.Types.Mixed });
Оскільки це тип без схем, ви можете змінити значення на все, що вам більше подобається, але Mongoose втрачає здатність автоматично визначати та зберігати ці зміни. Щоб "сказати" Мангусту, що значення змішаного типу змінилося, викличте .markModified(path)
метод документа, що передає шлях до змішаного типу, який ви щойно змінили.
person.anything = { x: [3, 4, { y: "changed" }] };
person.markModified('anything');
person.save(); // anything will now get saved