node.js - 如何在异议模型的 $afterUpdate 挂钩中获取整个更新的条目?
问题描述
我使用 Objection.js 作为我的 ORM,用于一个简单的降雨应用程序。当较低级别的表已更新时,我需要能够动态更新和输入一个表。为此,我需要正在更新的整个条目,以便可以使用该数据正确更新动态更新的条目。
我使用$afterUpdate
钩子来获取较低级别的表条目。我遇到的问题是,当我this
在$afterUpdate
钩子函数中登录时,它只包含我要更新的条目部分的属性。我怎样才能获得整个条目?我确信我可以通过对数据库运行额外的查询来获得记录,但我希望能够避免这种情况。任何帮助,将不胜感激
解决方案
我认为,到目前为止,您只能通过额外的查询来获得整个模型。如果您使用实例查询 ($query) 进行更新,您可以从options.old
.
询问:
const user = await User.query().findById(userId);
await user.$query()
.patch({ name: 'Tom Jane' })
钩:
$afterUpdate(opt, queryContext) {
console.log(opt.old)
}
修补
如果您不需要在钩子中执行此操作,您可能希望使用patch
链接的函数first().returning('*')
在单个查询中获取整个模型,它比patchAndFetchById
在 postgreSQL 中更有效。如文档中所述。
因为 PostgreSQL(和其他一些)支持返回('*')链接,您实际上可以插入一行,或更新/修补/删除(一个)现有行,并接收受影响的行作为模型实例单一查询,从而提高效率。请参阅示例以获得更清晰的信息。
const jennifer = await Person
.query()
.patch({firstName: 'Jenn', lastName: 'Lawrence'})
.where('id', 1234)
.returning('*')
.first();
参考:
推荐阅读
- python - 如何使用 Matplotlib 更改 Y 轴的比例距离?
- python-3.x - 如何在div标签下抓取多个图像标签
- javascript - Javascript替换方法对我不起作用?
- javascript - 无论行数和列数如何,都可以将网格放入 div
- excel - 折线图中 X 轴上未正确显示日期
- c++ - 如何在代码中显示模拟,为每个搜索会话打印数组并最后打印总比较?
- java - 检查字符串是否包含字母
- jquery - 对某些 Datatable 列进行排序时出错,但是当我评论“ServerSide”代码时这是正常的(CodeIgniter 4)
- node.js - 我可以在 React 应用程序中使用节点“child_process”吗?
- jenkins - 如何根据来自 Build Failure Analyzer Jenkins 插件的错误类别发送电子邮件/触发参数化远程作业?