Sequelize Instance.destroy (...) не возвращает никакой информации, если строки были удалены или нет - PullRequest
0 голосов
/ 09 января 2020

Может быть связано с этой открытой проблемой: 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)
})
...