Return 在 pg-promise 中

Return in pg-promise

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

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

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

  • 无效的 promise 使用,当在 .catch 你做 return result 时,这不是处理 promise 拒绝的方式,你必须提供错误处理,或者重新抛出/重新拒绝错误.
  • 无效使用pg-promise library. You use method one that's supposed to reject when anything other than 1 record is returned, as per the method's documentation,同时你在说I need to catch if it returns more than one row... ,逻辑上自相矛盾

结果如下:你的查询执行成功,returns多条记录,进而让方法one拒绝,然后你取拒绝原因转通过 return result 将其转化为已解决的问题。总之,您的代码到处都是错误的。

先用pg-promise you are supposed to use the right method, according to the number of records you are expecting back, see The Basics.

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