Orw*_*erg 2 sql-server node.js sequelize.js
我正在使用 Sequelize 作为我的节点应用程序的数据库 (SQL Server) 交互工具。我想创建一个在表有更新/交互时运行的钩子,为了解决这个问题,我将调用该表“用户”。我选择使用的钩子是 Sequelize 的“afterBulkUpdate”。
我在“用户”模型的定义中定义了该钩子。我已经验证当“用户”更新时钩子会触发。但是,我想要做的是将已更新的单个“User”传递给“afterBulkUpdate”挂钩。我的应用程序被分解为 MVC 架构,实际调用 UserService 内的 Sequelize 的“.update”,而钩子是在用户模型中定义的。在这两层之间是实际数据丢失的地方。
TLDR:如果我将我的 User 对象更新为 {"name":"fred","desc":"updated"}。当更新函数没有调用钩子的行(我可以看到)时,如何将其传递给我的 Sequelize 钩子?
示例代码:
我的 Hook 定义:
hooks:
afterBulkUpdate: (user, options) ->
console.log "Do something with the actual data here"
Run Code Online (Sandbox Code Playgroud)
我的 User.Update 定义:
update: (user) ->
new Promise (resolve, reject) ->
User.update(
user
where:
name: user.name
)
.then (res) ->
resolve res
.catch (err) ->
reject err
Run Code Online (Sandbox Code Playgroud)
钩子接收所有相同的选项update:
User.update(user, { where ..., user: user })
Run Code Online (Sandbox Code Playgroud)
在您的钩子中,您将可以访问options.user. 这些值也应该已经在此处可用.attributes
另一方面,所有的sequelize方法都已经返回一个promise,所以不需要包装它。
| 归档时间: |
|
| 查看次数: |
3369 次 |
| 最近记录: |