Я занимаюсь очисткой кода. Я работаю над NodeJS, Express REST API. Например, у меня есть такой API:
app.get('/getKeys', isLoggedIn, async(req, res) => {
var decoded = jwt.decode(res.locals.newToken);
req.body.profileID = decoded.profileID
let profileID = decoded.profileID
req.body.sessionID = req.cookies.sessionID
.then(async(response) => {
await pro.sendData(profileID, 'Fetched', {
profileID,
keysFetched: true
})
console.log(response.data)
res.cookie('userToken', res.locals.newToken, {
httpOnly: true,
sameSite: 'Strict',
secure: true,
domain: 'example.com'
})
return res.status(200).send(apiResponse.sendReply(1, 'got KEys', {
data: response.data.data
}))
})
.catch(err => {
console.log(err.response.data);
res.cookie('userToken', res.locals.newToken, {
httpOnly: true,
sameSite: 'Strict',
secure: true,
domain: 'example.com'
})
return res.status(500).send(apiResponse.sendReply(1021, 'redirct to login'))
})
});
Для удобства чтения и понятного кода, я пытаюсь использовать asyn c await вместо обещаний. Я использовал await для метода post, удалил await из pro.sendData
и попытался поместить все в блоки try catch. Я не знаю, правильно это или неправильно. Это мой новый код.
app.get('/getKeys', isLoggedIn, async(req, res) => {
try {
var decoded = jwt.decode(res.locals.newToken);
req.body.profileID = decoded.profileID
let profileID = decoded.profileID
req.body.sessionID = req.cookies.sessionID
const data = await transport.post(postOffice.SENTRY + '/getKeys', req.body);
pro.sendData(profileID, 'Fetched', {
profileID,
keysFetched: true
});
console.log(data);
res.cookie('userToken', res.locals.newToken, {
httpOnly: true,
sameSite: 'Strict',
secure: true,
domain: 'example.com'
});
return res.status(200).send(apiResponse.sendReply(1, 'got Keys', {
data: data
}))
} catch (err) {
console.log(err.data);
res.cookie('userToken', res.locals.newToken, {
httpOnly: true,
sameSite: 'Strict',
secure: true,
domain: 'example.com'
});
return res.status(500).send(apiResponse.sendReply(1021, 'redirct to login'));
}
});