数据库同步

当开始一个新的项目时,你还不会有一个数据库结构,并且使用Sequelize你也不需要它. 只需指定你的模型结构,并让库完成其余操作. 目前支持的是创建和删除表:

  1. // 创建表:
  2. Project.sync()
  3. Task.sync()
  4. // 强制创建!
  5. Project.sync({force: true}) // 这将先丢弃表,然后重新创建它
  6. // 删除表:
  7. Project.drop()
  8. Task.drop()
  9. // 事件处理:
  10. Project.[sync|drop]().then(() => {
  11. // 好吧...一切都很好!
  12. }).catch(error => {
  13. // oooh,你输入了错误的数据库凭据?
  14. })

因为同步和删除所有的表可能要写很多行,你也可以让Sequelize来为做这些:

  1. // 同步所有尚未在数据库中的模型
  2. sequelize.sync()
  3. // 强制同步所有模型
  4. sequelize.sync({force: true})
  5. // 删除所有表
  6. sequelize.drop()
  7. // 广播处理:
  8. sequelize.[sync|drop]().then(() => {
  9. // woot woot
  10. }).catch(error => {
  11. // whooops
  12. })

因为.sync({ force: true })是具有破坏性的操作,可以使用match参数作为附加的安全检查.

match参数可以通知Sequelize,以便在同步之前匹配正则表达式与数据库名称 - 在测试中使用force:true但不使用实时代码的情况下的安全检查.

  1. // 只有当数据库名称以'_test'结尾时,才会运行.sync()
  2. sequelize.sync({ force: true, match: /_test$/ });