以pg-promise回归

时间:2016-07-23 20:04:27

标签: node.js postgresql express pg-promise

我使用req, res模块为Node创建了一个包含所有查询的单独文件。虽然对于大多数人来说,我只是在查询后使用undefined,而我想要返回一个值。这是行不通的。它返回passportLogin: (email)=> { db.one(`SELECT userid FROM user`) .then( result => { return result; }) .catch( error => { return error; }); }

keyPressed

1 个答案:

答案 0 :(得分:1)

该代码同时存在两个问题:

  • 无效的承诺使用,当你在.catch return result内进行,而不是承诺拒绝的处理方式时,你必须提供错误处理,或者重新抛出/重新拒绝错误。< / LI>
  • 无效使用pg-promise库。您使用的方法one应该在返回1个记录以外的任何内容时拒绝as per the method's documentation,同时您要说I need to catch if it returns more than one row...,这是一个逻辑矛盾。

它的结果如下:您的查询成功执行,并返回多条记录,这反过来使方法one拒绝,然后您采取拒绝原因并将其转换为已解决的原因做return result。总而言之,您的代码遍布整个地方。

首先,使用pg-promise,您应该使用正确的方法,根据您期望的记录数量,请参阅The Basics

然后根据您的业务逻辑处理.then/.catch。我在这里不能更具体,因为你没有提供更多细节。