Tengo dos tablas, una almacena pedidos de clientes y la otra almacena artículos en un orden específico. Estoy tratando de actualizar ambas tablas a la vez de la siguiente manera:
const updateCustOrder = 'UPDATE orders SET customer=$1, due_date=$2 WHERE order_id=$3'; const updateItem = 'UPDATE items SET order_id=$1, quantity=$2, cost=$3 WHERE item_id=$4'; Promise.all([ pool.query(updateCustOrder, [customer, due_date, order_id]), pool.query(updateItem, [order_id, qty, cost, item_id]) ]).then(function() { response.status(201).send('Successfully Updated'); }).catch(function (e) { response.status(500).send('Updated failed'); }); El atributo order_id es una clave principal en la tabla de pedidos y una clave externa en la tabla de artículos. El problema con el que me encuentro es que los valores de la tabla de pedidos se actualizan correctamente, pero los valores de la tabla de artículos no se actualizan.
¿Has mirado en Knex en absoluto? Puede ayudar mucho con las tareas de SQL más dolorosas. Sin embargo, eso no responde exactamente a tu pregunta.
Podría intentar usar async/await .
Admito que estoy un poco oxidado en Node. Pero, algo como esto debería funcionar:
async function sqlCalls() { const updateCustOrder = 'UPDATE orders SET customer=$1, due_date=$2 WHERE order_id=$3'; const updateItem = 'UPDATE items SET order_id=$1, quantity=$2, cost=$3 WHERE item_id=$4'; const first = await pool.query(updateCustOrder, [customer, due_date, order_id]); const second = await pool.query(updateItem, [order_id, qty, cost, item_id]) // Use If/Else for error handling }