Aslında "Karışık" ( Schema.Types.Mixed
) mod, Mongoose'da tam olarak bunu yapıyor gibi görünüyor ...
şema içermeyen , serbest biçimli bir JS nesnesini kabul eder - böylece ona ne atarsanız atın. Daha sonra bu nesnede tasarrufları manuel olarak tetiklemeniz gerekiyor gibi görünüyor, ancak bu adil bir değiş tokuş gibi görünüyor.
Karışık
"Her şey yolunda" SchemaType, esnekliği, sürdürmenin daha zor olduğu bir ödünleşime gelir. Karışık, Schema.Types.Mixed
boş bir nesne değişmezi aracılığıyla veya geçerek kullanılabilir
. Aşağıdakiler eşdeğerdir:
var Any = new Schema({ any: {} });
var Any = new Schema({ any: Schema.Types.Mixed });
Şemasız bir tür olduğundan, değeri istediğiniz herhangi bir şeye değiştirebilirsiniz, ancak Mongoose bu değişiklikleri otomatik olarak algılama ve kaydetme yeteneğini kaybeder. Mongoose'a Karma türün değerinin değiştiğini "söylemek" için .markModified(path)
, yolu az önce değiştirmiş olduğunuz Karma türe geçiren belgenin yöntemini çağırın .
person.anything = { x: [3, 4, { y: "changed" }] };
person.markModified('anything');
person.save(); // anything will now get saved