【问题标题】:NodeJs and Sequelize: when to sync?NodeJs 和 Sequelize:何时同步?
【发布时间】:2017-09-05 06:31:33
【问题描述】:

我对 NodeJs 很陌生,但我习惯于使用 PHP 来处理 ORM。每次我部署站点时,我都会同步到数据库。在 Symfony 中时,前教义:模式:更新 --force。

但是,在 Sequelize 的文档中,他们给出了在每个查询之前完成同步的示例。这是一个好习惯吗?

我刚刚做了一个测试,可以在没有同步的情况下进行查询,所以我想知道在应用程序启动时只同步一次是否是个好主意。 NodeJs 开发者是如何工作的?

在这个例子中,我可以同时做这两个:

User.sync().then(function () {
    return User.create({
        firstName: 'John',
        lastName: 'Hancock',
        locale: 'en'
    });
});

User.create({
    firstName: 'John',
    lastName: 'Hancock',
    locale: 'en'
});

不同之处在于,在第二种情况下,我不在 Promise 链中,因此我无法在不自己创建 Promise 的情况下执行依赖于用户创建的任务。

谢谢 ;)

【问题讨论】:

    标签: node.js orm sequelize.js


    【解决方案1】:

    .sync() 方法在数据库中创建缺失的表。

    见:http://docs.sequelizejs.com/en/v3/docs/schema/#syncing

    我认为它包含在示例中以确保即使您在数据库中还没有这些表时它们也能正常工作,因此您不必手动运行 create table

    对于一般代码,尤其是在生产环境中,我不会这样做,因为您通常不希望您的代码默默地更改数据库架构,您通常希望自己控制该过程。

    但是对于开发来说,在更改模型时不必运行任何数据库迁移脚本可能会很有用,尽管我不希望它每次都能正常工作。

    【讨论】:

    • 谢谢!是的,我知道它为我们创建了表格。这就是为什么我发现每次进行查询时都调用它是多余的。如果你只做一次,你在哪里做?就像在 index.js 中你调用一次 User.sync 一样?还是您有一个单独的脚本没有投入生产?
    猜你喜欢
    • 2017-03-18
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2017-05-26
    • 2016-03-02
    • 2019-03-25
    • 2017-02-17
    • 2021-07-20
    相关资源
    最近更新 更多