如何在异议模型的$ afterUpdate挂钩中获取整个更新的条目?

时间:2019-01-22 13:28:09

标签: node.js postgresql objection.js

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

我将$afterUpdate钩用于较低级别的表条目。我遇到的问题是,当我在this挂钩函数中登录$afterUpdate时,它仅包含要更新的条目部分的属性。我如何获得整个参赛作品?我确定我可以通过对数据库运行附加查询来获取记录,但我希望可以避免这种情况。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

我认为,截至目前,您只能通过额外的查询来获得整个模型。 如果您要使用实例查询($ 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('*')函数来在单个查询中获取整个模型,它比{{ 1}}。如文档中所述。

  

由于PostgreSQL(及其他一些)支持返回('*')链接,因此您实际上可以插入一行,或更新/修补/删除现有行,并将受影响的行作为在单个查询中对实例建模,从而提高了效率。有关更多信息,请参见示例。

patchAndFetchById

参考文献: