SequelizeでJSONフィールドをupdateする場合はsetメソッドを使う
nodejsのSequelizeで、MySQLのJSONフィールドをupdateしようとしてドハマリしたのでメモ。
DataTypes.JSON なフィールドは、create時はそのフィールドにobjectを入れるだけで保存できるが、update時はsetメソッドを通してsaveしないと更新できない。
これは更新できない
const hoge = await models.Hoge.create({ jsonField: { foo: 123 } }) hoge.jsonField.bar = 456; await hoge.save(); // jsonField.barは保存されない
これは更新できる
const hoge = await models.Hoge.create({ jsonField: { foo: 123 } }) hoge.set('jsonField.bar', 456); await hoge.save(); // jsonField.barは保存される
めちゃくちゃハマった。忘れそう。
コメント / トラックバック