node.js - 从单独的第三方 Node 模块运行 Sequelize 迁移文件?

标签 node.js orm sequelize.js node-modules sequelize-cli

我正在开发第三方 NODE 模块,该模块处理发送电子邮件并将其存储在数据库中,所以我们将其称为邮件模块。为了让某人使用它的功能,将其导入到他的项目中并使用其功能来发送和存储电子邮件就足够了。

这里的问题是,导入邮件模块的人需要手动创建数据库表来存储电子邮件,因为 Sequelize CLI 在单独的模块中看不到迁移脚本。在 mail-module 中有 Sequelize 迁移脚本,但开发人员在模块中查找它比将其复制到自己的项目中并作为其项目的一部分运行更麻烦。

是否有任何方法可以避免这种手动工作并进行配置,以便当开发人员(邮件模块的用户)运行自己的迁移脚本时,也会执行邮件模块迁移脚本?

最佳答案

您不一定需要将邮件模块迁移复制到主模块。您可以为 db:migrate 命令指定 --migrations-path 选项。

假设 ./node_modules/.bin/sequelize db:migrate 在主模块中运行迁移,并且您的邮件模块迁移目录位于 node_modules/main-module/lib/migrations 中,您可以在 package.json 中组合以下脚本中的命令:

{
  ...
  "scripts": {
    "dbs-migrate": "./node_modules/.bin/sequelize db:migrate && ./node_modules/.bin/sequelize db:migrate --migrations-path ./node_modules/mail-module/lib/migrations"
  }
}

这样,您将使用以下命令运行所有迁移:npm run dbs-migrate。希望这能解决您的问题。

关于node.js - 从单独的第三方 Node 模块运行 Sequelize 迁移文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56922523/

相关文章:

node.js - npm 安装 google-cloud 失败

java - 使用 Hibernate Annotations 映射枚举类型

javascript - 从 GraphQL 到 Sequelize.js 的查询 SELECT ... WHERE COL1 = X AND (COL2 LIKE Y OR COL3 LIKE Y)

node.js - Sequelize增量函数返回错误

javascript - Node.js 中所有内置事件的列表?

javascript - 如何用nodeJs生成javascript文件

node.js - NodeJS套接字挂起超时

数据库:具有 NoSQL/文档数据库 (DDD) 的存储库

具有整数列的 Laravel 关系数组

node.js - Sequelize - beforeCreate 未被调用