Может быть связано с этой открытой проблемой: instance.destroy (...) не возвращает никакой информации, если строки были удалены или нет , но это больше относится к Model.destroy(...)
, что в соответствии документация должна возвращать количество удаленных строк.
Я новичок в Sequelize, поэтому, пожалуйста, исправьте меня, если я делаю что-то не так. Я использую его с MySQL 8.0.16 и запускаю sequelize 5.21.2
При использовании Model.findAll(...)
, а затем циклически перебираю строки и обрабатываю Instance.destroy()
Мне возвращается экземпляр согласно Instance.destroy(...)
документация
db.tags.findAll({where: MyWhereObj, attributes: MyFieldArray}).then(tags => {
_.forEach(tags, tag => {
//more processing scripts for tag
tag.destroy().then(deleted => {
console.log(deleted)
})
})
})
Я хотел бы знать, была ли строка успешно удалена. Я просмотрел возвращенный экземпляр и посмотрел, существует ли такой атрибут, как isNewRecord
, для isDeletedRecord
, но нет аналога
. Я могу наблюдать за консолью узла и видеть, что запрос проходит правильно. Безопасно ли и лучше всего предполагать, что строка была успешно удалена?
Запрос отправляется на MySQL как ...
DELETE FROM `tags` WHERE `guid` = 'aaa-bbb-ccc-ddd'
... который должен соответствовать количеству строк удален, но Sequelize, похоже, игнорирует эту информацию
Я думаю, что я могу поймать ошибку удаления или ошибку поиска / обработки, используя эти блоки перехвата. Но интересно, есть ли лучший способ просто узнать, произошло удаление или нет
db.tags.findAll({where: MyWhereObj, attributes: MyFieldArray}).then(tags => {
_.forEach(tags, tag => {
// more processing scripts for tag
tag.destroy().then(deleted => {
console.log(deleted)
}).catch(err =>{
// The row was not deleted
console.error(err)
})
})
}).catch(err => {
// Error in Retrieving/Processing
console.error(err)
})