【问题标题】:Sequelize create database schema from modelSequelize 从模型创建数据库模式
【发布时间】:2018-04-05 02:12:16
【问题描述】:

我可以使用 sequelize 从可用模型创建数据库架构吗?我在一个缺少许多迁移且没有测试的项目上工作。要运行测试,我需要创建一个新的数据库(sqlite3),但我无法使用迁移初始化其架构(因为它们丢失了)。是否可以使用模型来创建架构?

【问题讨论】:

    标签: sequelize.js database-schema


    【解决方案1】:

    是的。如果您只是在应用程序中同步 sequelize,模型将为您创建数据库表

    【讨论】:

    • 有没有办法从 cli 或以同步方式做到这一点?因为我想在 Mocha 配置中执行此操作,所以无论何时运行任何测试,我确信它运行在最新的测试数据库上。但是因为sync 是异步的,所以我不知道该怎么做
    【解决方案2】:

    是否可以使用模型来创建架构? ...因为我想在 Mocha 配置中执行此操作,所以每当运行任何测试时,我确信它会在最新的测试数据库上运行。但是因为同步是异步的,所以我不知道该怎么做

    假设使用了 Sequelize CLI,这里有一种方法可以确保您在任何 mocha 测试中都有更新的数据库:

      // Force sync without migrations
      // This can be run at the top of every individual test suite
      before(function () {
        return require('../../models').sequelize.sync({ force: true })
      })
    

    路径 '../../models' 指向 Sequelize CLI 为您创建的 models/index.js

    【讨论】:

    • 感谢您提供更详细的回答。我已经考虑过使用 before 助手,但我更喜欢在 mocha 运行时进行全局同步
    • @Uko 如果您想出该方法,请添加答案,我也很想利用它。很遗憾,我目前没有全局解决方案。
    • 我发现你可以使用mocha-prepare npm 模块。文档很清楚,这是我在 mocha.opts 中需要的同步文件中的代码:prepare((done) => { db.sequelize.sync({ force: true }).then(() => done()); });
    猜你喜欢
    • 2014-01-05
    • 1970-01-01
    • 2019-08-10
    • 2020-01-29
    • 1970-01-01
    • 2011-08-22
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多