[Mongoose] Schema.Types.Mixed だと save 前に .markModified が必要
Node.js + Mongoose でインスタンスを save で保存できないときの原因のひとつに Schema.Types.Mixed があります。
プロパティの型が Schema.Types.Mixed とかだと、値に変更があったことを Mongoose が自動検知してくれないみたいです。
To "tell" Mongoose that the value of a Mixed type has changed, call the .markModified(path) method of the document passing the path to the Mixed type you just changed.
markModified メソッドの使い方は下記のような感じです。
var schema = new Schema({
mixed: Schema.Types.Mixed
})
// example use
var Thing = mongoose.model('Thing', schema);
var m = new Thing;
m.mixed = {[ any: { thing: 'i want' } ]};
m.markModified('mixed');
m.save(callback);
以上、Mongoose の Schema.Types.Mixed を使いこなしたい現場からお送りしました。