【问题标题】:Migrations in Sequelize in my own folder structureSequelize 中的迁移在我自己的文件夹结构中
【发布时间】:2019-06-21 14:12:28
【问题描述】:

我是 Sequelize 的新手,我当前的项目要求我将它与迁移一起使用。我熟悉迁移他们的工作和方式。 我来自Django 背景,每个子应用程序在同一个文件夹中都有模式、视图、api、url 和迁移。我喜欢这种结构,并希望在我的 nodejs 应用程序中保持相同。我正在尝试将一项功能放在一个地方。这对我来说更有意义。

我的结构

|---api
     |---user
     |    |--- api.js
     |    |--- utils.js
     |    |--- models.js
     |    |--- index.js
     |    |--- migrations
     |            |--- xxx123-migration.js
     |            |--- xxx1235-migration.js
     |---payment
          |--- api.js
          |--- utils.js
          |--- models.js
          |--- index.js
          |--- migrations
                  |--- xxx123-migration.js
                  |--- xxx1235-migration.js

现在我的问题是我不知道如何让Sequelize-cli 指向我的文件夹并查找要生成和运行的迁移。

Sequelize-cli 为我不想关注的模型、配置、种子等生成自己的文件夹。

感谢任何帮助。

【问题讨论】:

    标签: javascript node.js sequelize.js sequelize-cli


    【解决方案1】:

    编辑:

    在您更新结构后,无法使用 .sequelizerc 文件来执行此操作,因为它不支持多个迁移文件夹。

    您需要在项目根目录创建.sequelizerc 文件以覆盖默认路径。见here

    如果我假设 api 是文件夹结构中项目根目录中的第一个文件夹,则模型位于 api/user 中,迁移位于 api/user/migrations 中。以下应该有效:

    const path = require('path');
    
    module.exports = {
      'config': path.resolve('CONFIGPATHHERE', 'sequelize.js'),
      'models-path': path.resolve('api/user', 'sequelize'),
      'migrations-path': path.resolve('api/user', 'migrations')
    }
    

    确保您指定了 sequelize 配置路径。

    【讨论】:

    • 如果在我的 api 中有很多文件夹,如 user.. ex,我有 userauthpayment 等。我如何指向 api 中的所有文件夹?
    • @hannadrehman 对不起,我认为续集不可能这样做,您可能需要 github.com/sequelize/umzug,即使使用 umzug,我不确定是否可以创建多个模型文件夹,然后模型文件夹中的迁移文件夹。
    • 我可能错了。但是将迁移保存在与模型相同的文件夹中是有意义的。仅当我在 api 中有一个文件夹时,您的答案才有效。您认为组织此类项目的最佳方式是什么?任何线索都非常受欢迎@feiiiiii
    • @hannadrehman 我通常将迁移文件夹放在根级别的db 文件夹下,而模型文件夹与我的controller 文件夹位于同一级别。没有最好的办法,这是你个人的选择,但是sequelize-cli有局限性,它只是你想要的结构,目前不是很方便。
    • 有没有其他的 ORM 可以支持我的结构方式。将一项功能放在一个文件夹中对我来说似乎更方便。如果没有办法,那么我只能按照您建议的方式进行
    猜你喜欢
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 2011-09-15
    • 2017-06-26
    • 2016-01-27
    相关资源
    最近更新 更多