问题标签 [umzug]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1049 浏览

javascript - Sequelize 中的模型和迁移定义之间的主要区别是什么?

一些 SQL 数据库的 Sequelize 用户sync({ force: true })在早期经常使用,然后切换到迁移。我很困惑,因为迁移和模型似乎有相似的语法,但也有一些似乎没有被强烈强调的差异。

一些观察(可能是错误的):

  • 两者中的选项对象不同:options.indexes模型中的对象在迁移中不起作用(但在模型中起作用)
  • 使用的自定义索引名称unique: 'somename'在迁移字段属性中不起作用(但在模型中起作用);但unique: true两者都适用
  • 需要显式创建外键 - 并且references需要在迁移中设置 a(但在模型中,hasMany/belongsTo 会自动生成外键字段和外键引用)
  • idcreatedAt并且updatedAt必须在迁移中手动创建,而不是模型

最后两个是有意义的,因为它描述了迁移职责(设置数据库模式)与模型 - 但迁移支持的内容/它的工作方式对于类似的项目似乎有所不同,并且该sync选项加剧了我的困惑。

一些问题:

  • Sequelize中的迁移和模型之间需要记住的主要区别是什么(不是两者之间的一般理念)?模型中的哪些选项(使用sync选项时)在迁移中起作用
  • sync其他人在从离散迁移切换时是否只是将模型文件复制到迁移中?您是否删除了仅在模型中有效的部分无关信息?仅适用于迁移?
0 投票
1 回答
3605 浏览

sequelize.js - Sequelize 迁移中的承诺链 - 关系不存在

这个简单的测试代码:

返回以下错误:

现在,我明白到执行第二个承诺(关于更改表)时,表还没有创建。

不可能是因为迁移中的所有查询都是同时执行的,因为我有这个测试迁移:

它工作正常。

那么,任何人都可以解释为什么第一个不起作用以及如何实现它,以便可以从单个迁移中执行表的创建+添加 PK?

0 投票
1 回答
880 浏览

node.js - Sequilize/Umzug:在哪里存储数据库模式的状态?

所以,我想编写一个使用一些数据迁移的应用程序。我应该在哪里存储数据库的当前状态?

例如:我有一个生产服务器和我的开发机器。我为它编写了一个应用程序和 3 个迁移。当我部署应用程序服务器时,还会运行 3 次迁移。现在我要写第四次迁移。服务器如何识别它只需要运行第 4 次迁移并且它已经运行了之前的 3 次迁移?

0 投票
1 回答
7327 浏览

node.js - 续集 umzug 迁移

我正在使用sequelize js并开发一个node js application,它已部署到生产环境并具有实时数据库。

在开发模式下,如果我需要alterDB我曾经使用它来完成它Sequelize.sync({ force: true }),并且效果很好。

但是现在,在开发完成后,我想更改一个表并为其添加一列。

我搜索了很多帖子,但没有得到关于如何运行这些迁移的确切示例。

我尝试使用Umzug并运行迁移,但它给我带来了错误。

这是我尝试过的代码,

迁移/barmigration.js:

这是umzug configuration

当我运行该文件时up function,在这个位置出现错误return migration.addColumn

错误:

Unhandled rejection TypeError: Cannot read property 'addColumn' of undefined

所以,参数迁移似乎是undefined. 请帮帮我。

0 投票
1 回答
663 浏览

node.js - 迁移 - SequqlizeCLI 和/或 Umzug 与 node.js. 使用 Sequelize CLI 和 Umzug 的区别?

我不熟悉将 Sequelize 和 Umzug 与 Node.js 一起使用。我已经安装了 Sequelize CLI 并测试了迁移,看起来效果很好。我读到一些团队使用 umzug 来创建这些迁移。我不清楚使用 Sequelize-CLI 和 Umzug 有什么区别?各有优劣?进行迁移的理想方式是什么?

0 投票
3 回答
301 浏览

node.js - 使用随时间变化的模型为 Sequelize 制作可重现的迁移字符串?

我正在使用 Umzug 和 Sequelize 为在后端使用 sequelize 和 express 的节点应用程序构建我的第一个迁移系统。

我的问题是,随着后端模型随着时间的推移提交而发生变化(模型被删除、一些变化、一些被添加),这会破坏碰巧使用来自 sequelize 的模型的旧迁移。例子:

假设我有一个处理“UserStats”的迁移#1。五个版本之后的模型 UserStats 需要从应用程序中删除,因此模型被删除并进行新的迁移以删除表。

现在尝试启动新的开发环境会中断,因为当新服务器尝试运行所有旧迁移时,它会尝试为第一次迁移找到模型 UserStats,但该模型不再存在。

所以根本问题是模型的版本与应用迁移状态不同步。每次迁移都要求 sequelize 模型看起来像最初创建迁移时所做的那样。处理这个问题的最佳方法是什么?

0 投票
1 回答
690 浏览

webpack - 如何在 umzug 配置中传递迁移实例数组

我正在使用 umzug 在我的电子 vue 应用程序中运行迁移,因为 webpack 我不能使用类似的路径

所以我听说我可以传递迁移实例,但我不知道我是怎么做到的。

到目前为止,我有这个:

0 投票
1 回答
570 浏览

node.js - umzug down 方法没有运行

我正在尝试使用 umzug/sequelize 但我根本无法运行 down 方法。我正在关注本教程。我想基本上用 up 和 down 方法创建迁移文件。up 方法成功执行,但调用 down 根本不是所有 umzug.down() 方法。

我的迁移文件也如下所示:

当我执行 node migrate.js up 时,它可以工作。但 down 永远不会被执行。我错过了什么吗?

0 投票
1 回答
324 浏览

electron - 导入sequelize时的循环依赖

我有一个电子项目,其中有一组从抽象类扩展而来的类。抽象类有一个 sequelize 实例和一个模型的导入(下面的复制代码中没有说明)。

编译后,我的电子应用程序运行良好。但是在测试中, jest 不断返回错误

根据我的阅读,这是由循环依赖引起的。我一直在评论一遍又一遍的代码,但我无法理解如何通过测试来预防/解决这个问题。

复制代码可以在这里找到:https ://github.com/jjoey87/jest-circular-dependencies

有没有更好的方法来重组我的导入或实际的解决方法来开玩笑?我不明白为什么它在通过 electron-webpack 编译时不会引起任何问题,但会开玩笑。我还观察是否要在模块 B 下注释导入的组件,这允许我的测试运行/通过。

同样,如果我评论从 Abstract 类导入 sequelize,它允许我的测试通过

0 投票
1 回答
3674 浏览

postgresql - 使用 postgres 和 umzug 时如何为续集迁移定义默认架构?

我试图始终使用 sequelize 和 umzug 运行迁移到特定的 postgresql 数据库模式。让我们称之为custom架构。默认情况下,所有查询都转到public架构。 有没有办法定义默认模式以在 sequelize 或 umzug 中运行所有迁移?

背景:

使用以下代码,我可以为迁移中的单个查询定义架构:

它报告它是成功的并使用正确的模式:

但是,我需要的是能够定义所有迁移中的所有查询始终运行的默认架构,而不是在我想要运行的每个查询中定义我需要的架构。

我尝试搜索、阅读库的文档并schema: 'custom'到处复制粘贴,但除了上面的示例之外,到目前为止没有任何其他工作。

我正在使用以下代码来运行迁移:

我的 umzug2.2.0和 sequelize 是5.3.0. 该migrations表已正确创建到custom架构中,但迁移仍在public架构中运行。

运行未在查询本身中指定架构的迁移时,我收到以下错误。从错误中我们可以看到架构未定义: