5

我使用pg-promiseNode.js 模块创建了一个包含所有查询的单独文件。虽然对于其中大多数我只是req, res在查询后使用,但对于一个我想返回一个值。这没用。它返回undefined

passportLogin: (email)=> {
        db.one(`SELECT userid 
                FROM user`)
            .then( result => {
                return result;
            })
            .catch( error => {
                return error;
            });
    }
4

1 回答 1

2

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

  • 无效的诺言使用,当.catch你在里面做return result的时候,这不是如何处理诺言拒绝的,你必须要么提供错误处理,要么重新抛出/重新拒绝错误。
  • pg-promise库的无效使用。根据方法的文档,当返回除 1 条记录之外的任何内容时,您使用的方法应该拒绝,同时您在说,这是一个逻辑矛盾。I need to catch if it returns more than one row...

结果如下:你的查询执行成功,返回了多条记录,这反过来又让方法被拒绝,然后你把拒绝的原因,通过doing将它变成一个已解决的return result。总之,您的代码到处都被破坏了。

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

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

于 2016-07-23T22:51:08.060 回答