如何在 Sequelize CLI 中添加、删除新列

新手上路,请多包涵

我刚刚开始使用 Sequelize 和 Sequelize CLI

由于是开发时间,所以经常会添加和删除列。向现有模型添加新列的最佳方法是什么?

例如,我想将一个新列 ‘ 完成’ 到 Todo 模型。我将此列添加到 models/todo.js。下一步是什么?

我试过 sequelize db:migrate

不工作: “没有执行迁移,数据库模式已经是最新的。”

原文由 Gijo Varghese 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 827
2 个回答

如果您使用的是 sequelize-cli ,则需要先创建迁移。这只是一个文件,它告诉引擎如何更新数据库以及在出现问题时如何回滚更改。您应该始终将此文件提交到您的存储库

$ sequelize migration:create --name name_of_your_migration

迁移文件如下所示:

 module.exports = {
  up: function(queryInterface, Sequelize) {
    // logic for transforming into the new state
    return queryInterface.addColumn(
      'Todo',
      'completed',
     Sequelize.BOOLEAN
    );

  },

  down: function(queryInterface, Sequelize) {
    // logic for reverting the changes
    return queryInterface.removeColumn(
      'Todo',
      'completed'
    );
  }
}

然后,运行它:

 $ sequelize db:migrate

原文由 Maria Ines Parnisari 发布,翻译遵循 CC BY-SA 4.0 许可协议

您仍然可以使用带有两个选项的对象参数的同步函数,当然一个是您不添加值的默认选项,另一个是您添加强制或更改属性的实例。所以在这种情况下你想使用 UserModel.sync({ force: true }) :这会创建表,如果它已经存在则首先删除它

UserModel.sync({ alter: true })

这将检查数据库中表的当前状态(它有哪些列,它们的数据类型是什么等),然后在表中执行必要的更改以使其与模式匹配……你可以使用这个当您使用模型实例有关更新以及表和模型的更多信息时,请在 此处 查看有关更多功能的文档

原文由 BrianDev 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题