SQL ERROR
I’m trying to insert datas to my purchase_order table and purchase_order_item simultaneously, my problem is either, (intermediate value) is not iterable or getting the sql format error
Please give me tips and advice, I’m new to coding
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
const { supplier_Id, order_date, items } = req.body;
if (
!supplier_Id ||
!order_date ||
!items ||
!Array.isArray(items) ||
items.length === 0
) {
return res.status(400).json({
message: "All fields are required and items must be a non-empty array.",
});
}
const conn = await pool.getConnection();
try {
await conn.beginTransaction();
console.log("Connection established");
const purchaseOrderResult = await conn.query(
"INSERT INTO purchase_order (supplier_Id, order_date) VALUES (?, ?)",
[supplier_Id, order_date]
);
const purchaseOrderId = purchaseOrderResult.insertId || [];
console.log("Purchase Order Result:", purchaseOrderId);
const purchaseOrderItems = [];
for (const item of items) {
const [productResult] = await conn.query(
"SELECT pieces_per_box FROM products WHERE productId = ?",
[item.productId]
);
if (productResult.length === 0) {
throw new Error(`Product with ID ${item.productId} not found`);
}
const piecesPerBox = productResult.pieces_per_box || [];
const totalQuantity = item.quantity * piecesPerBox;
purchaseOrderItems.push([purchaseOrderId, item.productId, totalQuantity]);
}
if (purchaseOrderItems.length > 0) {
await conn.query(
"INSERT INTO purchase_order_item (fk_purchaseOrder, fk_productId, quantity) VALUES ?",
[purchaseOrderItems]
);
}
console.log(purchaseOrderItems);
await conn.commit();
conn.release();
res.status(201).send("Purchase Order added successfully");
} catch (error) {
await conn.rollback();
console.error("Error adding Purchase Order:", error);
res.status(500).json({ error: "Error adding Purchase Order" });
}
});```
New contributor
Timothy Tizon is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.