【问题标题】:Sequelize: Destroy/Delete all records in the tableSequelize:销毁/删除表中的所有记录
【发布时间】:2017-04-18 12:51:44
【问题描述】:

我正在使用 Mocha 进行单元测试。

测试开始时,我想删除表中以前的所有记录。

我尝试过的:

db.User.destroy({ force: true }).then(() => {
}).then(() => done());


db.User.destroy(
    {where: undefined},
    {truncate: false}
).then(() => {
    return 
}).then(() => done());


db.User.destroy({}).then(() => {
    return db.User.bulkCreate(users)
}).then(() => done());

我不断收到以下错误:

 Error: Missing where or truncate attribute in the options parameter of model.destroy.

如何删除/销毁表中的所有记录?

【问题讨论】:

    标签: mysql node.js sequelize.js


    【解决方案1】:

    你可以试试

    db.User.destroy({
      where: {},
      truncate: true
    })
    

    【讨论】:

    • @Coxer 不是。您将收到UnhandledPromiseRejectionWarning: Error: Missing where or truncate attribute in the options parameter of model.destroy 错误
    • 你不需要 where 选项。 db.User.destroy({ truncate: true })没关系
    • 如果您有外键约束,truncate: true 可能不起作用。在这种情况下,您可以简单地删除该子句。
    • here 是更安全的解决方案。
    • 我只这样做了 users.destroy({ where: {} }) 并且它有效
    【解决方案2】:

    我能够用代码解决这个问题:

    table.sync({ force: true });
    

    这是一种比maheshiv's answer 中提出的更安全的解决方案。

    【讨论】:

    • 如果您想重置整个表并且 ids 将再次从 1 开始计数,这是一个更好的解决方案,我发现这个答案是测试目的最安全的答案
    • 感谢您在开发 b2c 服务时对我有很大帮助
    【解决方案3】:

    它对我有用:db.User.truncate()

    【讨论】:

      猜你喜欢
      • 2015-06-01
      • 1970-01-01
      • 2011-04-26
      • 2017-12-12
      • 2020-02-08
      • 1970-01-01
      • 2014-01-22
      • 2015-11-12
      • 1970-01-01
      相关资源
      最近更新 更多