删除不存在的表时,sequelize sync options.force = true崩溃

时间:2016-10-19 16:33:20

标签: node.js postgresql sequelize.js

我正在使用nodejs + sequelize开发一个应用程序。我阅读了sequelize的文档(这不是很好......)因为我在开发环境中我想在新执行之前删除表,所以,这就是代码

sequelize.sync({
  force: true,
  logging: console.log
  }).then(function(){});

如果数据库中没有表,则会产生异常,我认为不应该

  

执行(默认):DROP TABLE IF EXISTS“凭证”CASCADE;   未处理的拒绝SequelizeDatabaseError:必须是关系凭证的所有者       在Query.formatError

如果我已经有了表,那么它会尝试两次删除最后一个表,这会重复异常

  

执行(默认):DROP TABLE IF EXISTS“凭证”CASCADE;   执行(默认):DROP TABLE IF EXISTS“requestline”CASCADE;   执行(默认):DROP TABLE IF EXISTS“请求”CASCADE;   执行(默认):DROP TABLE IF EXISTS“products”CASCADE;   执行(默认):DROP TABLE IF EXISTS“黑名单”CASCADE;   执行(默认):DROP TABLE IF EXISTS“costumer”CASCADE;   执行(默认):DROP TABLE IF EXISTS“costumer”CASCADE;   未处理的拒绝SequelizeDatabaseError:必须是关系的所有者   负荷消费       在Query.formatError

无法理解为什么...... 所以,我就这样解决了这个问题

//workaround
sequelize.sync({
  force: true,
  logging: console.log
})
  .then(function () { })
  .catch(function (err) {
    sequelize.sync({
      logging: console.log
    }).then(function () { })
  })

哪个确实有效,但它很难看...... 有什么想法吗?

0 个答案:

没有答案