问题标签 [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.
javascript - Sequelize 中的模型和迁移定义之间的主要区别是什么?
一些 SQL 数据库的 Sequelize 用户sync({ force: true })
在早期经常使用,然后切换到迁移。我很困惑,因为迁移和模型似乎有相似的语法,但也有一些似乎没有被强烈强调的差异。
一些观察(可能是错误的):
- 两者中的选项对象不同:
options.indexes
模型中的对象在迁移中不起作用(但在模型中起作用) - 使用的自定义索引名称
unique: 'somename'
在迁移字段属性中不起作用(但在模型中起作用);但unique: true
两者都适用 - 需要显式创建外键 - 并且
references
需要在迁移中设置 a(但在模型中,hasMany/belongsTo 会自动生成外键字段和外键引用) id
,createdAt
并且updatedAt
必须在迁移中手动创建,而不是模型
最后两个是有意义的,因为它描述了迁移职责(设置数据库模式)与模型 - 但迁移支持的内容/它的工作方式对于类似的项目似乎有所不同,并且该sync
选项加剧了我的困惑。
一些问题:
- Sequelize中的迁移和模型之间需要记住的主要区别是什么(不是两者之间的一般理念)?模型中的哪些选项(使用
sync
选项时)在迁移中起作用? sync
其他人在从离散迁移切换时是否只是将模型文件复制到迁移中?您是否删除了仅在模型中有效的部分无关信息?仅适用于迁移?
sequelize.js - Sequelize 迁移中的承诺链 - 关系不存在
这个简单的测试代码:
返回以下错误:
现在,我明白到执行第二个承诺(关于更改表)时,表还没有创建。
不可能是因为迁移中的所有查询都是同时执行的,因为我有这个测试迁移:
它工作正常。
那么,任何人都可以解释为什么第一个不起作用以及如何实现它,以便可以从单个迁移中执行表的创建+添加 PK?
node.js - Sequilize/Umzug:在哪里存储数据库模式的状态?
所以,我想编写一个使用一些数据迁移的应用程序。我应该在哪里存储数据库的当前状态?
例如:我有一个生产服务器和我的开发机器。我为它编写了一个应用程序和 3 个迁移。当我部署应用程序服务器时,还会运行 3 次迁移。现在我要写第四次迁移。服务器如何识别它只需要运行第 4 次迁移并且它已经运行了之前的 3 次迁移?
node.js - 续集 umzug 迁移
我正在使用sequelize js
并开发一个node js application
,它已部署到生产环境并具有实时数据库。
在开发模式下,如果我需要alter
,DB
我曾经使用它来完成它Sequelize.sync({ force: true })
,并且效果很好。
但是现在,在开发完成后,我想更改一个表并为其添加一列。
我搜索了很多帖子,但没有得到关于如何运行这些迁移的确切示例。
我尝试使用Umzug
并运行迁移,但它给我带来了错误。
这是我尝试过的代码,
迁移/barmigration.js:
这是umzug configuration
:
当我运行该文件时up function
,在这个位置出现错误return migration.addColumn
错误:
Unhandled rejection TypeError: Cannot read property 'addColumn' of undefined
所以,参数迁移似乎是undefined
. 请帮帮我。
node.js - 迁移 - SequqlizeCLI 和/或 Umzug 与 node.js. 使用 Sequelize CLI 和 Umzug 的区别?
我不熟悉将 Sequelize 和 Umzug 与 Node.js 一起使用。我已经安装了 Sequelize CLI 并测试了迁移,看起来效果很好。我读到一些团队使用 umzug 来创建这些迁移。我不清楚使用 Sequelize-CLI 和 Umzug 有什么区别?各有优劣?进行迁移的理想方式是什么?
node.js - 使用随时间变化的模型为 Sequelize 制作可重现的迁移字符串?
我正在使用 Umzug 和 Sequelize 为在后端使用 sequelize 和 express 的节点应用程序构建我的第一个迁移系统。
我的问题是,随着后端模型随着时间的推移提交而发生变化(模型被删除、一些变化、一些被添加),这会破坏碰巧使用来自 sequelize 的模型的旧迁移。例子:
假设我有一个处理“UserStats”的迁移#1。五个版本之后的模型 UserStats 需要从应用程序中删除,因此模型被删除并进行新的迁移以删除表。
现在尝试启动新的开发环境会中断,因为当新服务器尝试运行所有旧迁移时,它会尝试为第一次迁移找到模型 UserStats,但该模型不再存在。
所以根本问题是模型的版本与应用迁移状态不同步。每次迁移都要求 sequelize 模型看起来像最初创建迁移时所做的那样。处理这个问题的最佳方法是什么?
webpack - 如何在 umzug 配置中传递迁移实例数组
我正在使用 umzug 在我的电子 vue 应用程序中运行迁移,因为 webpack 我不能使用类似的路径
所以我听说我可以传递迁移实例,但我不知道我是怎么做到的。
到目前为止,我有这个:
node.js - umzug down 方法没有运行
我正在尝试使用 umzug/sequelize 但我根本无法运行 down 方法。我正在关注本教程。我想基本上用 up 和 down 方法创建迁移文件。up 方法成功执行,但调用 down 根本不是所有 umzug.down() 方法。
我的迁移文件也如下所示:
当我执行 node migrate.js up 时,它可以工作。但 down 永远不会被执行。我错过了什么吗?
electron - 导入sequelize时的循环依赖
我有一个电子项目,其中有一组从抽象类扩展而来的类。抽象类有一个 sequelize 实例和一个模型的导入(下面的复制代码中没有说明)。
编译后,我的电子应用程序运行良好。但是在测试中, jest 不断返回错误
根据我的阅读,这是由循环依赖引起的。我一直在评论一遍又一遍的代码,但我无法理解如何通过测试来预防/解决这个问题。
复制代码可以在这里找到:https ://github.com/jjoey87/jest-circular-dependencies
有没有更好的方法来重组我的导入或实际的解决方法来开玩笑?我不明白为什么它在通过 electron-webpack 编译时不会引起任何问题,但会开玩笑。我还观察是否要在模块 B 下注释导入的组件,这允许我的测试运行/通过。
同样,如果我评论从 Abstract 类导入 sequelize,它允许我的测试通过
postgresql - 使用 postgres 和 umzug 时如何为续集迁移定义默认架构?
我试图始终使用 sequelize 和 umzug 运行迁移到特定的 postgresql 数据库模式。让我们称之为custom
架构。默认情况下,所有查询都转到public
架构。
有没有办法定义默认模式以在 sequelize 或 umzug 中运行所有迁移?
背景:
使用以下代码,我可以为迁移中的单个查询定义架构:
它报告它是成功的并使用正确的模式:
但是,我需要的是能够定义所有迁移中的所有查询始终运行的默认架构,而不是在我想要运行的每个查询中定义我需要的架构。
我尝试搜索、阅读库的文档并schema: 'custom'
到处复制粘贴,但除了上面的示例之外,到目前为止没有任何其他工作。
我正在使用以下代码来运行迁移:
我的 umzug2.2.0
和 sequelize 是5.3.0
. 该migrations
表已正确创建到custom
架构中,但迁移仍在public
架构中运行。
运行未在查询本身中指定架构的迁移时,我收到以下错误。从错误中我们可以看到架构未定义: