Sequelize:销毁/删除表中的所有记录

Posted

技术标签:

【中文标题】Sequelize:销毁/删除表中的所有记录【英文标题】:Sequelize: Destroy/Delete all records in the table 【发布时间】: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.

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

【问题讨论】:

【参考方案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()

【讨论】:

以上是关于Sequelize:销毁/删除表中的所有记录的主要内容,如果未能解决你的问题,请参考以下文章

用加入续集销毁记录

使用 Sequelize 包含子句查询在另一个表中没有条目的记录

即使 paranoid 设置为 true,Sequelize.js 仍会删除表行

删除表中的所有记录 ID从1开始

如何使用Android从sqlite中的表中删除所有记录?

如何从Mysql中的所有表中删除一条唯一记录