我有一个异步函数来执行以下knex事务(在MySQL数据库上):在表中查询特定列上具有特定范围的所有行;更新所有这些行的列值;返回所有这些行的 all 列:
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
此代码有效,但是为了提高效率(一个SQL操作),我想使用“ whereIn”而不是在“ for”循环中运行。 有什么方法可以从queryResult中提取“ _id”列值以供whereIn()。update()使用? 在不丢失原始结果的情况下-即 all 列-函数需要返回的结果
答案 0 :(得分:0)
在我走了几分钟(总是走了!)之后,我发现这不仅仅是一个knex,而是一个JavaScript问题,只是解析对象:
const result = queryResult.map(({ _id }) => _id)
await trx.into(tbl).whereIn('_id', result).update({ published: Math.round(new Date().valueOf() / 1000) })