Quiero insertar un nuevo paciente, primero tengo que insertar en los usuarios, pero no sé cómo insertar en el paciente con una clave externa ('id_user') la identificación de los usuarios que inserté antes.
Este es mi código:
app.post("/api/patient", async function(req, res){ let sql = "INSERT INTO users (email, password, name, surnames, sex, birth_date) VALUES ('"+req.body.email+"','"+req.body.password+"','"+req.body.name+"','"+req.body.surnames+"','"+req.body.sex+"','"+req.body.birth_date+"')"; const user = await query(sql); var id = user[0].id; console.log(id); var sql2 = "INSERT INTO patients (sip, native_language, dependent, id_user) VALUES ('"+req.body.sip+"','"+req.body.native_language+"','"+req.body.dependent+"','"+id+"')"; const patient = await query(sql2); response.body = { code: 200, message: "Solicitud exitosa", data: patient } res.status(response.body.code); res.send(response); });Y tengo el siguiente error:
var id = user[0].id; TypeError: Cannot read properties of undefined (reading 'id')Soy un programador principiante y sé que mi código es vulnerable a las inyecciones de sql.
Cuando se ejecutan instrucciones INSERT o UPDATE, mysql devuelve un objeto que contiene el ID de la fila insertada, por lo que: Change var id = user[0].id; para var id = user.insertId;