我使用所有查询创建了一个单独的文件pg-promise
节点模块。虽然对于大多数人来说我只是使用req, res
在查询之后,我想返回一个值。这是行不通的。它返回undefined
.
passportLogin: (email)=> {
db.one(`SELECT userid
FROM user`)
.then( result => {
return result;
})
.catch( error => {
return error;
});
}
该代码同时存在两个问题:
- 无效的承诺使用,当在里面时
.catch
you do return result
,这不是处理 Promise 拒绝的方式,您必须提供错误处理,或者重新抛出/重新拒绝错误。
- 无效使用pg-承诺 https://github.com/vitaly-t/pg-promise图书馆。你用方法one http://vitaly-t.github.io/pg-promise/Database.html#one当返回 1 条记录以外的任何内容时,应该拒绝,根据方法的文档 http://vitaly-t.github.io/pg-promise/Database.html#one,同时你说
I need to catch if it returns more than one row...
,这是一个逻辑矛盾。
结果如下:你的查询执行成功,并返回多条记录,这又使得方法one http://vitaly-t.github.io/pg-promise/Database.html#one拒绝,然后你将拒绝原因转变为已解决的原因return result
。总而言之,你的代码到处都被破坏了。
首先,与pg-承诺 https://github.com/vitaly-t/pg-promise您应该根据您期望返回的记录数使用正确的方法,请参阅基础 https://github.com/vitaly-t/pg-promise/wiki/Learn-by-Example#basics.
然后处理.then/.catch
根据您的业务逻辑。我在这里无法更具体,因为你没有提供更多细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)