【问题标题】:How to delay trigger creation in Node.js using Sequelize如何使用 Sequelize 在 Node.js 中延迟触发器创建
【发布时间】:2014-12-29 02:08:23
【问题描述】:

我在使用 Node.js + Express + Sequelize 创建触发器时遇到问题。

我有我的模型对象的表(即用户、设备等)和连接表来表达它们的多对多关联(即 hasDevice)。

我的麻烦来自于我无法使用

创建一个简单的触发器
sequelize.query('query', null, {raw: true});

因为表的创建是完全异步的,我不知道何时会创建触发器的表(特别是我收到以下错误:

可能未处理的 SequelizeDatabaseError: ER_NO_SUCH_TABLE: Table 'express612.hasDevice' 不存在

提前感谢您的帮助。

【问题讨论】:

  • 您需要在创建表后运行创建查询的触发器。异步创建表的代码是什么?
  • 这确实是我的问题。我觉得我无法控制表创建过程。我正在关注本教程sequelizejs.com/articles/express#the-application,并且如您所见,没有关于表创建的明确部分(或者可能只是我在这个问题上是一个小新手)
  • 似乎它会在.sync之后的.then回调中
  • 你说得对:) 特别是,根据 Sequelize 的官方教程,sync() 在 ./bin/www 内部使用(这就是我没有看到它的原因)。 @ExplosionPills 你可以写一个答案来接收绿色勾号:)

标签: mysql node.js triggers sequelize.js


【解决方案1】:

表是异步创建的,所以你需要在表创建后的回调中做任何依赖于表创建的工作(例如触发器创建)。根据文档,这似乎是在.sync方法之后,例如:

http://sequelizejs.com/articles/express#the-application

您可以在.sync().then的回调中创建触发器

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 2021-04-02
    相关资源
    最近更新 更多