首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从sequelize raw查询返回更新的值

从sequelize raw查询返回更新的值
EN

Stack Overflow用户
提问于 2019-01-26 11:54:57
回答 2查看 424关注 0票数 1

我有一个使用原始查询来更新数据库的操作,我希望获得受查询影响的行作为输出。这个是可能的吗?

代码语言:javascript
复制
const op = (replacements, pgdb) { 
  const query = q(replacements);
  const args = [query, { replacements, type: Sequelize.QueryTypes.UPDATE, raw: true }];
  const results = await pgdb.query(...args);
  console.log(results);
  return results;
};
EN

回答 2

Stack Overflow用户

发布于 2019-01-26 15:18:34

Postgresql可以通过RETURNING返回记录。

代码语言:javascript
复制
UPDATE T
SET ...
WHERE ...
RETURNING *
票数 0
EN

Stack Overflow用户

发布于 2020-02-17 01:06:26

是的你可以。我正在对PostgreSQL数据库使用Sequelize。我的规格如下:

"pg":"^7.12.1“

"sequelize":"^5.21.2“

"sequelize-cli":"^5.5.1“

我在以下代码块中运行了一个更新查询:

代码语言:javascript
复制
const query = `UPDATE bookings b
    SET "isPaid" = :isPaid,
        "paymentType" = :paymentType
    FROM trips t,
         requests r
    WHERE "b"."tripId" = t.id
      AND r.id = "t"."requestId"
      AND r.id = :requestId
      AND "r"."userId" = :userId
    RETURNING b.id, "isPaid", "paymentType"`;

    return db.sequelize.query(
      query, {
        replacements: {
          isPaid, paymentType, requestId, userId
        }
      }
    );

我记录了结果:

代码语言:javascript
复制
console.log('resultFromQuery', resultFromQuery); 

并得到了以下结果:

代码语言:javascript
复制
resultFromQuery [
  [
    { id: 7, isPaid: true, paymentType: 'paypal' },
    { id: 8, isPaid: true, paymentType: 'paypal' }
  ],
  Result {
    command: 'UPDATE',
    rowCount: 2,
    oid: null,
    rows: [ [Object], [Object] ],
    fields: [ [Field], [Field], [Field] ],
    _parsers: [ [Function: parser], [Function: parser], [Function: parser] ],
    _types: TypeOverrides { _types: [Object], text: {}, binary: {} },
    RowCtor: null,
    rowAsArray: false
  }
]

然后,我能够获得rowCount,如下所示:

代码语言:javascript
复制
console.log('resultFromQuery', resultFromQuery[1].rowCount);

我还能够获得更新后的行本身,如下所示(您可以像使用'*'一样选择整个行,或者指定您想要的字段):

代码语言:javascript
复制
console.log('resultFromQuery', resultFromQuery[0]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54375543

复制
相关文章

相似问题

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