gpt4 book ai didi

node.js - 如何在异议模型的 $afterUpdate Hook 中获取整个更新条目?

转载 作者:行者123 更新时间:2023-11-29 12:34:53 27 4
gpt4 key购买 nike

我使用 Objection.js 作为我的 ORM 用于一个简单的降雨应用程序。当较低级别的表整体已更新时,我需要能够动态更新和输入一个表。为此,我需要更新整个条目,以便我可以使用该数据正确更新动态更新的条目。

我正在使用 $afterUpdate Hook 获取较低级别的表条目。我遇到的问题是,当我在 $afterUpdate Hook 函数中记录 this 时,它只包含我要更新的条目部分的属性。我怎样才能得到整个条目?我确定我可以通过对数据库运行额外的查询来获取记录,但我希望可以避免这种情况。任何帮助将不胜感激

最佳答案

我认为,截至目前,您只能通过额外查询获得整个模型。如果您使用实例查询 ($query) 进行更新,您可以从 options.old 获取其他属性。

查询:

const user = await User.query().findById(userId);
await user.$query()
.patch({ name: 'Tom Jane' })

钩子(Hook):

$afterUpdate(opt, queryContext) {
console.log(opt.old)
}

补丁

如果您不需要在钩子(Hook)中执行此操作,您可能需要使用与 first().returning('*') 链接的 patch 函数来在单个查询中获取整个模型,它比 postgreSQL 中的 patchAndFetchById 更有效。如文档中所述。

Because PostgreSQL (and some others) support returning('*') chaining, you can actually insert a row, or update / patch / delete (an) existing row(s), and receive the affected row(s) as Model instances in a single query, thus improving efficiency. See the examples for more clarity.

const jennifer = await Person
.query()
.patch({firstName: 'Jenn', lastName: 'Lawrence'})
.where('id', 1234)
.returning('*')
.first();

引用资料:

关于node.js - 如何在异议模型的 $afterUpdate Hook 中获取整个更新条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54309367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com