我正在尝试使用 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/