gpt4 book ai didi

javascript - Node Express 链接函数返回 UnhandledPromiseRejectionWarning

转载 作者:行者123 更新时间:2023-12-03 02:31:00 25 4
gpt4 key购买 nike

我正在分解 Node 端点,以便发生两件事

  1. 检查用户是否存在
  2. 将用户添加到数据库

controller.js

exports.signup = (req, res) => {
methods.checkUser('email', req.body.email)
.then(methods.addUser(req.body.email, req.body.password))
.then(() => {
res.send('added');
})
.catch((err) => {
console.log(err);
res.status(403).send(err);
});
};

methods.js

exports.checkUser = (key, val) => {
return new Promise((resolve, reject) => {
db.query('SELECT * FROM ?? WHERE ?? = ?', ['users', key, val], (err, result) => {
if (result) {
resolve(result);
} else {
reject(err);
}

});
});
};

exports.addUser = (email, password) => {
return new Promise((resolve, reject) => {
if (email === 'test@domain.com') {
resolve(true);
} else {
console.log('rejecting');
reject(email);
}
});
};

addUser() 目前仅检查电子邮件 === test@domain.com 是否测试 Promise 链。

因此端点在 Postman 中返回added

但是终端显示以下内容

rejecting
(node:71904) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): bot@domain.com
(node:71904) [DEP0018] 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.

通常我会这样写。

exports.signup = (req, res) => {
methods.checkUser('email', req.body.email)
.then(() => {
methods.addUser(req.body.email, req.body.password)
.then(() => {
res.send('added');
})
.catch((err) => {
res.status(403).send(err);
})
})
.catch((err) => {
console.log(err);
res.status(403).send(err);
});
};

我想采取更简洁的方法,但需要帮助

最佳答案

这是Promise链的正确写法:

exports.signup = (req, res) => {
methods.checkUser('email', req.body.email)
.then(() => methods.addUser(req.body.email, req.body.password) )
.then(() => res.send('added') )
.catch((err) => {
console.log(err);
res.status(403).send(err);
});
};

因此,如果链中出现 reject,例如示例中的 email=bot@domain.com 输入,则会处理拒绝到最后一次捕获为止。

关于javascript - Node Express 链接函数返回 UnhandledPromiseRejectionWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48738231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com