我应该将此 async/await 和 .exec 与 mongoose 和 google-auth-library 一起使用吗?
Should I use this async/await and .exec with mongoose and google-auth-library?
我有这个后端 (nodeJS),我在其中接收异步函数中的 IdToken
路线在app.js
app.post("/login", login.login );
login.js
exports.login = async (req, res) => {
const token = req.body.token;
const client = new OAuth2Client(googleID, googleSecret);
const ticket = client.verifyIdToken({
idToken: token,
audience: googleID
});
await ticket.then(data => {
User.findOne().and([{
"email": data.payload.email
}])
.exec((err, user) => { //code}
但我在某处读到不建议混合异步、.then 和 .exec
我的代码有问题或有改进建议吗?这会导致瓶颈吗?
全看个人喜好了,两者作用相同。在更大的项目上事情开始变得复杂,这就是简单性比嵌套的意大利面条代码派上用场的地方。
我总是更喜欢 async/await
,因为它很简单,而且我可以轻松避免嵌套问题以及 try/catch
的好处。
类似这样的代码。
exports.login = async (req, res) => {
const token = req.body.token;
const client = new OAuth2Client(googleID, googleSecret);
const ticket = await client.verifyIdToken({
idToken: token,
audience: googleID
});
const user = await User.findOne({
"email": ticket.payload.email
});
如您所见,更加简洁并添加 try/catch
以捕获错误
我有这个后端 (nodeJS),我在其中接收异步函数中的 IdToken
路线在app.js
app.post("/login", login.login );
login.js
exports.login = async (req, res) => {
const token = req.body.token;
const client = new OAuth2Client(googleID, googleSecret);
const ticket = client.verifyIdToken({
idToken: token,
audience: googleID
});
await ticket.then(data => {
User.findOne().and([{
"email": data.payload.email
}])
.exec((err, user) => { //code}
但我在某处读到不建议混合异步、.then 和 .exec 我的代码有问题或有改进建议吗?这会导致瓶颈吗?
全看个人喜好了,两者作用相同。在更大的项目上事情开始变得复杂,这就是简单性比嵌套的意大利面条代码派上用场的地方。
我总是更喜欢 async/await
,因为它很简单,而且我可以轻松避免嵌套问题以及 try/catch
的好处。
类似这样的代码。
exports.login = async (req, res) => {
const token = req.body.token;
const client = new OAuth2Client(googleID, googleSecret);
const ticket = await client.verifyIdToken({
idToken: token,
audience: googleID
});
const user = await User.findOne({
"email": ticket.payload.email
});
如您所见,更加简洁并添加 try/catch
以捕获错误