使用Sequelize

时间:2016-07-08 00:43:55

标签: sql-server node.js sequelize.js

我正在使用Sequelize作为我的节点应用程序的数据库(SQL Server)交互工具。我想创建一个挂钩,只要有一个表的更新/交互,我就会调用此表" User"为了这个问题。我选择使用的钩子是Sequelize" afterBulkUpdate"。

我在我的" User"的定义中定义了钩子。模型。我已经验证了当用户"用户"已更新。但是,我想要做的是传递个人"用户"已更新为" afterBulkUpdate"钩。我的应用程序被分解为MVC架构,实际调用了Sequelize" .update"在用户模型中定义钩子时,在UserService内部。在这两层之间是实际数据丢失的地方。

TLDR: 如果我将我的用户对象更新为{"名称":" fred"," desc":"更新"}。当更新函数没有一行(我能看到)调用钩子时,如何将它传递给我的Sequelize钩子?

示例代码:
我的胡克定义:

hooks: 
  afterBulkUpdate: (user, options) ->
    console.log "Do something with the actual data here"

我的用户。更新定义:

  update: (user) ->
new Promise (resolve, reject) ->
  User.update(
    user
    where:
      name: user.name
      )
  .then (res) ->
    resolve res
  .catch (err) ->
    reject err

1 个答案:

答案 0 :(得分:1)

钩子接收update所做的所有相同选项:

User.update(user, { where ..., user: user })

在您的钩子中,您将可以访问options.user。这些值也应该已在.attributes here

中提供

另一方面,所有续集方法都已经返回一个promise,所以不需要包装它。