我正在使用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
答案 0 :(得分:1)
钩子接收update
所做的所有相同选项:
User.update(user, { where ..., user: user })
在您的钩子中,您将可以访问options.user
。这些值也应该已在.attributes
here
另一方面,所有续集方法都已经返回一个promise,所以不需要包装它。