sequelize中的.sync()的真正用途是什么?

j2cgzkjk  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(991)

一般来说,我对sequelize和node.js是个新手,我想知道除了在开发阶段创建和构建一个与您的项目完全匹配的数据库之外,是否还需要.sync()。
以下面的例子为例:如果我已经有了我的数据库结构(用mysql workbench或其他什么东西制作的),那么使用.sync()是否有用?它在生产中有重要的应用吗?

trnvg8h3

trnvg8h31#

如果我已经有了我的数据库结构(用mysql workbench或者其他什么东西做的),那么使用.sync()是否有用?它在生产中有重要的应用吗?
不,继续 sync 将创建不存在的表。如果你已经有了所有的table,它就什么也做不了。但是如果你使用 force: true ,它将删除存在的表并从模型定义中重新创建它们。
另一方面,人们应该更愿意 migrations 结束 sync . sync 不反映故事的变化。迁移功能更强大,您可以使用它撤消、重做和执行更多操作。
在sequelize.js上有一个很好的答案:如何使用迁移和同步

7uzetpgm

7uzetpgm2#

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;

相关问题