如何解决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});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。