#mysql #node.js
Вопрос:
Я пытаюсь создать функцию в NodeJS для обновления формы с одной конечной точкой. Моя цель состоит в том, чтобы позволить пользователю выбрать, хочет ли он обновить только одно поле или все из них. Для этого я использую тернарный оператор. Я также хочу использовать подготовленные заявления, но опять же это проблема для меня. Пожалуйста, как мне следует поступить?
router.put('/edit/:id', (req, res, next) => {
const userID = req.params.id;
const { newFname, newLname, newUsername, newEmail} = req.body;
const sql2 = `SELECT * FROM users WHERE userID = ?`;
db.getConnection(function(err, connection) {
if (err) throw err;
else {
db.query(sql2, [userID], (err1, resultUser) => {
if (err1) throw err1;
// If the result of user is found replace the fields
if (resultUser) {
const sql = `UPDATE users SET
fname = '${newFname ? newFname : resultUser[0].fname}',
lname = '${newLname ? newLname : resultUser[0].lname},
username = '${newUsername ? newUsername : resultUser[0].username}',
email = '${newEmail ? newEmail : resultUser[0].email}'
WHERE userID = ?`;
db.query(sql, [userID], (errFinal, resultFinal) => {
if (errFinal) throw errFinal;
else if (!errFinal) {
res.send(resultFinal);
}
})
}
})
}
connection.release();
});
});
В коде я использую два отдельных оператора. первый, кто получит пользователя и его данные с помощью параметра «id». второй-проверить, выполнил ли пользователь ввод. поэтому, если пользователь не завершил "newFname"
, запрос отправит в базу данных старую информацию (resultUser[0].fname)
Что я делаю не так? Спасибо.