javascript – 承诺拒绝不使用mysql错误

我试图使用promises返回一个
mysql数据并且它可以正常工作,但是当我尝试在mysql中故意创建一个错误但是我得到了这个错误.

(node:28464) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Users not found
(node:28464) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

我在任何地方都检查过,它说使用.catch但奇怪的是我使用的是catch,但无法弄清楚问题.通常我想知道如何解决这个问题,而不是仅仅在不知道正确方法的情况下继续解决.

这是模特..

getAllUser =
     new Promise((resolve, reject) => {
        db.query('SELECT * from users', function (error, results, fields) {
            if (error){
                return reject('Users not found');
            }else{
                resolve(results[0]);
            }
        });
    });
module.exports = {
    getAllUser
};

这是我如何调用模型,顶部的模型应该返回一个错误,因为mysql表被称为user not users.

router.get('/db',(req,res,next)=>{
    getAllUser.then((result)=>{
      console.log(result);
    }).catch((e) => {
       console.log(e);
    });
});

最佳答案 您的模型文件中有错误.应该创建返回promise的函数而不是Promise.

工作代码:

模型:

getAllUser = () => new Promise((resolve, reject) => {
    db.query('SELECT * from users', function (error, results, fields) {
        if (error){
            return reject('Users not found');
        }else{
            resolve(results[0]);
        }
    });
});
module.exports = {
    getAllUser
};

路由器:

router.get('/db',(req,res,next)=>{
    getAllUser.then((result)=>{
      console.log(result);
    }).catch((e) => {
       console.log(e);
    });
});
点赞