pg-promise UPDATE返回成功返回码,但实际上不更新表

问题描述

我正在尝试使用pg-promise帮助器更新pgsql表中的一行。查询成功执行并返回成功返回码。但是更改未反映在表中。更新查询后我应该发出COMMIT还是一般自动提交?

const condition = pgp.as.format(` WHERE key = '${value}'`,putData);
const table = new pgp.helpers.TableName({ table: 'mytab',schema: 'myschema'});
const query = pgp.helpers.update(putData,[updateCols],table) + condition;

await db.none(query).then(() => {
  status = 200;
  response['status'] = 'success';
})
.catch(error => {
  status = 500;
  response['status'] = 'Failed';
  response['error'] = error.message;
  response['errorCode'] = error.code;
});

解决方法

未更新相应记录的原因是where条件中的输入无效。空格/空传递到WHERE条件。因此,它无需更新即可返回成功。现在,该代码已得到更正,并且可以正常工作。

第二(与问题无关),我在查询格式化程序中使用ES6字符串格式。根据@ vitaly-t的评论,我将其更改如下。

pgp.as.format('WHERE key = $1',[keyValue]);

pgp.as.format('WHERE key = ${keyValue}',{keyValue});

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...