обновление формы с одной конечной точкой с помощью тернарного оператора в mysql с помощью nodejs

#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)

Что я делаю не так? Спасибо.