当前位置:  开发笔记 > 编程语言 > 正文

如何获取knex/mysql中所有更新记录的列表

如何解决《如何获取knex/mysql中所有更新记录的列表》经验,为你挑选了1个好方法。

这是我正在处理的查询:

  return knex('table')
    .returning('id')
    .where('boolean', false)
    .andWhere('fooID', foo.id)
    .update({
      boolean : true
    })
    .limit(num)
    .then(function(ids) {
      console.log('\nids');
      console.log(ids); //outputs num

ids现在包含3,这是受影响的行数.有没有办法获得这3行的ID?我的印象.returning()就是这样,但似乎没有.



1> Mikael Lepis..:

Mysql数据库不支持returning语句,它只返回更新行的数量http://dev.mysql.com/doc/refman/5.7/en/update.html.

在您的情况下,您必须先查询要更新的行的ID,然后在事务中更新并获取它们.

像这样:

return knex.transaction(trx => {
  return trx('table')
    .select('id')
    .where('boolean', false)
    .andWhere('fooID', foo.id)
    .limit(num)
    .then(ids => {
      return trx('table').update({ boolean: true })
        .whereIn('id', ids)
        .then(() => {
          return trx('table').whereIn('id', ids);
        });
    });
});

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有