使用 Node Postgres 更新多个表
Updating Multiple Tables using Node Postgres
我有两个 table,一个存储客户订单,另一个存储特定订单的商品。我正在尝试按如下方式同时更新这两个 table:
const updateCustOrder = 'UPDATE orders SET customer=, due_date= WHERE order_id=';
const updateItem = 'UPDATE items SET order_id=, quantity=, cost= WHERE item_id=';
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');
});
属性 order_id
是订单 table 中的主键和项目 table 中的外键。我 运行 遇到的问题是订单 table 中的值已成功更新,但项目 table 中的值未更新。
你有没有仔细研究过 knex?它可以帮助完成更痛苦的 SQL 任务。不过,这并不能完全回答您的问题。
您可以尝试使用 async/await。
我承认我对 Node.js 有点生疏。但是,这样的事情应该有效:
async function sqlCalls() {
const updateCustOrder = 'UPDATE orders SET customer=, due_date= WHERE order_id=';
const updateItem = 'UPDATE items SET order_id=, quantity=, cost= WHERE item_id=';
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
}
我有两个 table,一个存储客户订单,另一个存储特定订单的商品。我正在尝试按如下方式同时更新这两个 table:
const updateCustOrder = 'UPDATE orders SET customer=, due_date= WHERE order_id=';
const updateItem = 'UPDATE items SET order_id=, quantity=, cost= WHERE item_id=';
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');
});
属性 order_id
是订单 table 中的主键和项目 table 中的外键。我 运行 遇到的问题是订单 table 中的值已成功更新,但项目 table 中的值未更新。
你有没有仔细研究过 knex?它可以帮助完成更痛苦的 SQL 任务。不过,这并不能完全回答您的问题。
您可以尝试使用 async/await。
我承认我对 Node.js 有点生疏。但是,这样的事情应该有效:
async function sqlCalls() {
const updateCustOrder = 'UPDATE orders SET customer=, due_date= WHERE order_id=';
const updateItem = 'UPDATE items SET order_id=, quantity=, cost= WHERE item_id=';
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
}