首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >knex.js多个更新

knex.js多个更新
EN

Stack Overflow用户
提问于 2017-09-06 08:02:08
回答 1查看 2.4K关注 0票数 1

现在我的工作流程是这样的:

  1. 从postgres数据库中获取行列表(比方说10.000)
  2. 对于每一行,我需要调用一个API端点并获得一个值,因此从API返回的值为10.000。
  3. 对于返回值的每一行,我需要更新数据库中的一个字段。更新10.000行

现在,在每次获取update之后,我都要执行一个API,但是可以想象,这并不是最优化的方法。

我还有别的选择吗?

EN

回答 1

Stack Overflow用户

发布于 2017-09-06 20:28:34

该代码中的瓶颈可能是从API获取数据。此技巧只允许更快地向DB发送许多小查询,而无需等待每次更新之间的往返时间。

要在单个查询中执行多个更新,可以使用公共表表达式并将多个小查询打包到单个CTE查询:

https://runkit.com/embed/uyx5f6vumxfy

代码语言:javascript
复制
knex
  .with('firstUpdate', knex.raw('?', [knex('table').update({ colName: 'foo' }).where('id', 1)]))
  .with('secondUpdate', knex.raw('?', [knex('table').update({ colName: 'bar' }).where('id', 2)]))
  .select(1)

knex.raw技巧--有一个解决办法,因为.with(string, function)实现有一个bug。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46069822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档