【发布时间】:2017-02-12 02:15:38
【问题描述】:
您好,我是 Postgresql 的新手,我想了解在抛出错误时如何处理 0 结果。本质上,如果用户不存在,我想获取用户,如果不存在则返回 null,并有一个错误处理程序。以下是我正在使用的当前代码。任何关于更好的方法的提示都非常感谢!
var options = {
// Initialization Options
promiseLib: promise
};
var pgp = require('pg-promise')(options);
var connectionString = 'postgres://localhost:5432/myDbName';
var db = pgp(connectionString);
function getUser(id) {
let user = new Promise(function(resolve, reject) {
try {
db.one('select * from users where loginName = $1', id).then(function(data) {
console.log(data);
resolve(data);
}).catch (function (e) {
console.log('error: '+e);
reject(e);
});
}
catch (e) {
console.log('error: '+e);
reject(e);
}
});
return user;
}
控制台输出:
error: QueryResultError {
code: queryResultErrorCode.noData
message: "No data returned from the query."
received: 0
query: "select * from users where loginName = 'someUserName'"
}
【问题讨论】:
-
你使用的是哪个节点的 postgres 模块?
-
pg-promise(添加到最近编辑的帖子中)
-
如果没有找到该行是正常情况(不是错误),您应该改用方法
oneOrNone,并检查null的解析值。使用.catch处理实际错误。
标签: node.js postgresql pg-promise