#node.js #sequelize.js
#node.js #sequelize.js
Вопрос:
Sequelize не будет обновлять поле JSON при некоторых обстоятельствах.
Например, у меня есть:
[[1]] (an array inside array)
И я пытаюсь что-то нажать:
instance.arr[0].push(1); // [[1,1]]
instance.save();
// or:
instance.update({arr: instance.arr});
Теперь внутри экземпляра я изменил массив, и внутри БД ничего не изменилось. Даже запрос не отправляется. 🙁
С веб-сайта sequelize:
https://sequelize.org/master/manual/model-instances.html Метод сохранения оптимизирован внутренне для обновления только тех полей, которые действительно изменились. Это означает, что если вы ничего не измените и вызовете save , Sequelize узнает, что сохранение является излишним, и ничего не сделает, т. Е. Запрос не будет сгенерирован (он все равно вернет обещание, но оно будет немедленно разрешено).
Это хорошо, но, похоже, это не работает для json, могу ли я выполнить принудительное обновление?
На сегодняшний день я должен сделать глубокую копию массива, чтобы сохранить его.
Я использую MariaDB IDK, если это имеет значение.
Комментарии:
1. Если вы просто сделаете мелкую копию, чтобы сама ссылка на массив изменилась, т. Е.
instance.arr = [...instance.arr]
Перед нажатием, Это сработает?
Ответ №1:
Кажется, вам нужно указать, что поле изменилось
instance.changed( 'arr', true);
instance.save