Это не будет работать так, как вы думаете ... в вашем app.post ('/ login-user', обработчик, блок try .. catch не будет перехватывать ошибки, поскольку обратный вызов будет вызываться асинхронно Лучший способ справиться с ошибками здесь - это обычный шаблон в Node.js. Установите переменную err на что-то, если вы получаете ошибку в функции loginUser. Например,
user.loginUser = (jUserData, fCallback) => {
var aData = [
jUserData.email,
jUserData.mobile_number,
1
]
var sQuery = 'SELECT * FROM users WHERE email = ? AND mobile_number = ? AND active = ?'
db.each(sQuery, aData, function (err, jRow) {
console.log(jRow)
if (err) {
console.log('BAD, user not logged in')
return fCallback(new Error('BAD, user not logged in: ' + err.message), {
status: "INTERNAL SERVER ERROR"
});
}
if (!Object.keys(jRow).length) {
console.log('NOT FOUND')
return fCallback(new Error('User not found'), {
status: "INTERNAL SERVER ERROR"
});
}
console.log('GREAT, user logged in')
return fCallback(false, jRow)
console.log(jRow)
})
}
Затем в обработчике app.post вы проверяете, что переменная err не равна нулю:
app.post('/login-user', (req, res) => {
user.loginUser(req.body, (err, jResult) => {
if (err) {
console.error(err.message);
return res.status(500).send('Internal server error');
}
let token = jwt.sign({
user: jResult,
}, "supersecret")
console.log(jResult)
return res.send(token)
})
})