Sequelize - 可以多次定义模型吗?我可以多次调用同步吗?

时间:2014-10-02 04:03:52

标签: sequelize.js

关于续集对象的生命周期,我有几个问题

  1. create a new instance and authenticate之后,如果连接断开会怎样?如何处理?

  2. 我可以sequelize.define()致电User。可以多次完成吗?我可以动态重新定义sequelize.sync()吗?现有实例会发生什么?

  3. 由于我define a model {{1}}同步数据库,我很感兴趣,可以多次调用它。

  4. 谢谢

1 个答案:

答案 0 :(得分:4)

  1. 我相信在请求发生时建立连接。 Sequelize没有"保持开放"与数据库的连接。如果连接丢失并返回,并且在此期间发出了查询,则无法建立连接,则查询将失败。我想我会花时间解决数据库可靠性问题而不是尝试其他意味着更多代码的选项,但这是我的看法。

  2. 您应该将define()视为在应用程序启动期间在开发框上的数据库上设置表的方法。理想情况下,定义应该只进行一次。不过,您可以根据需要多次调用define,但我相信表状态将是"最后定义调用wins"。根据您的配置,define也会对您的表执行DROP / CREATE,因此您需要确保了解定义调用的时间和原因。

  3. 您必须调用sync才能保留定义或确保它们存在于现有数据库中。你绝对不想多次调用它,你对sequelize实例的引用应该是一个单例。

  4. 当然,你可以在dev中做任何你想做的事情,但是在类似生产的设置中运行sequelize方面,你可能不希望同步运行任何定义,而只是验证模型它期望定义中存在与现有模式匹配,并且只应调用一次同步,并且其结果应该用作单例实例。