Я думаю, что мне нужна помощь с пониманием asyn c ожидают функциональности.
Я делаю запрос Post, который asyn c:
app.post('/updateprofile', upload.none(), async function (req, res) {
try {
let retData = await mainController.updateProfile(req.body, mysql, connectionParams);
console.log(retData);
res.status(200).send(retData);
} catch (error) {
console.log(error);
}
})
Как вы можете сказать сообщение request выполняет вызов асинхронной функции c с именем updateProfile, которая находится в моем главном контроллере:
updateProfile: async function (formData, mysql, connectionParams) {
console.log("l");
con = mysql.createConnection(connectionParams);
const result = await con.query(sql, function (err, result) {
if (err) {
console.log(err);
throw err;
}
return result;
});
con.end();
console.log("k");
if (result.affectedRows > 0) {
console.log('ffff');
return "OK"
} else {
console.log("22");
return "Fail";
}
}
По какой-то причине result.actedRows всегда <0. Поэтому мой возврат всегда Fail. Я подумал, что при использовании функции await вызов sql будет ждать перед переходом к следующему скомпилированному оператору if. Я, конечно, пытался использовать asyn c в разных формах. Я понимаю, что мне не нужно использовать Обещания, поскольку Обещания происходят "за сценой" в функциональности await / asyn c. Что я могу делать не так? </p>
result.afferedRow не определен, когда я показываю его в журнале консоли вне запроса sql в коде.