javascript - promise reject not working with mysql 错误

标签 javascript node.js promise

我正在尝试使用 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 而不是 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);
    });
});

关于javascript - promise reject not working with mysql 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46132135/

相关文章:

javascript - 跨浏览器库,降级触摸事件,没有额外的重量

javascript - Angular : Is this the correct way to chain promises?

ajax - polymer 1.0 : Wait for multiple iron-ajax requests to finish

javascript - 从 Promise 中提取 .then 和 .catch

javascript - 如何区分用户中止的调用和错误(jquery 文件上传)

javascript - 需要使用 jQuery、javascript 或任何其他插件修复 SVG DOM

javascript - 如何在 Firebase 中搜索单个对象,然后在不使用 forEach 的情况下对其执行某些操作?

node.js - 使用 Node.js 防止竞争条件

node.js - 使用 Passport-oauth2 获取访问 token 到期时间

javascript - 比较包含数组的对象属性以找出差异