Sequelize中真正的.sync()是什么?

时间:2018-05-15 20:50:26

标签: javascript mysql node.js sequelize.js

我一般是Sequelize和Node.js的新手,我想知道除了创建和构建数据库以便在开发阶段完全适合您的项目之外,是否还需要.sync()。

采用以下示例:如果我已经拥有我的数据库结构(使用MySQL Workbench或其他),那么以某种方式使用.sync()是否有用?它在生产中有什么重要的应用吗?

2 个答案:

答案 0 :(得分:3)

  

如果我已经拥有我的数据库结构(使用MySQL Workbench或   无论如何,以某种方式使用.sync()是否有用?它有没有   在生产中的重要应用?

没有。 Sequelize sync将创建不存在的表。如果您已经拥有所有表格,它将不会执行任何操作。但是,如果使用force: true,它将删除存在的表并从模型定义中重新创建它们。

另请注意,应该migrations优先于syncsync并不反映故事的更改。迁移功能更强大,您可以使用它进行撤消,重做等等。

这是see here

的好答案

答案 1 :(得分:0)

sequelize.sync()为所有已定义的模型创建表(即,在Sequelize实例上使用define方法)。它通过创建适当的表和关系(如果适用)将模型同步到数据库。

示例:

sequelize
  .sync()
  .then(result => {
    console.log(result);
  })
  .catch(err => console.log(err));

这是控制台日志开头的内容(“ products”表是基于“ product”模型创建的;它会自动复数):

Executing (default): CREATE TABLE IF NOT EXISTS `products` (`id` INTEGER NOT NULL auto_increment , `title` VARCHAR(255), `price` DOUBLE PRECISION NOT NULL, `imageUrl` VARCHAR(255) NOT NULL, `description` VARCHAR(255) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;