pg-promise UPDATE returns 成功 return 代码但实际上没有更新 table
pg-promise UPDATE returns success return code but actually not updating the table
我正在尝试使用 pg-promise 助手更新 pgsql table 中的一行。查询成功执行并且 returns 成功 return 代码。但这些变化并未反映在 table 中。我应该在更新查询后发出 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条件输入无效。 Spaces/Null 传递到 WHERE 条件。所以它 returns 没有更新任何东西就成功了。现在代码已经更正并且工作正常。
其次(与问题无关),我在查询格式化程序中使用了 ES6 字符串格式。根据@vitaly-t的评论,我将其更改如下。
pgp.as.format('WHERE key = ', [keyValue]);
或
pgp.as.format('WHERE key = ${keyValue}', {keyValue});
我正在尝试使用 pg-promise 助手更新 pgsql table 中的一行。查询成功执行并且 returns 成功 return 代码。但这些变化并未反映在 table 中。我应该在更新查询后发出 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条件输入无效。 Spaces/Null 传递到 WHERE 条件。所以它 returns 没有更新任何东西就成功了。现在代码已经更正并且工作正常。
其次(与问题无关),我在查询格式化程序中使用了 ES6 字符串格式。根据@vitaly-t的评论,我将其更改如下。
pgp.as.format('WHERE key = ', [keyValue]);
或
pgp.as.format('WHERE key = ${keyValue}', {keyValue});