Reputation: 990
I have a function in which I am trying to insert the users order into a order details table, where the admin user can see the order details of each order. the problem is, in my function, the same item is being inserted into the database twice, instead of each item. so it basically takes the last item ordered and inserts it. here's my function:
function orderDetails (req, res) {
var getOrder = "select * from " + tableName
ibmdb.open(ibmdbconn, function (err,conn) {
if (err) return console.log(err);
conn.query(getOrder, function (err, data) {
if (err) console.log(err);
else console.log("data");
var itemNames = "";
var itemPrices = "";
var itemQty = "";
var itemEC = "";
var itemSizes = "";
if(data.length){
for(var i = 0;i < data.length;i++) {
itemNames = data[i].ITEMDESC
console.log("item names: " + itemNames)
itemPrices = data[i].PRICE
console.log("item prices: " + itemPrices)
itemQty = data[i].QTY
console.log("item qty: " + itemQty)
itemEC = data[i].EACH_CASE
console.log("item ec: " + itemEC)
itemSizes = data[i].SIZE
console.log("item sizes: " + itemSizes)
console.log("------")
var insertOrderDetails = "insert into ORDERDETAILS (ORDERNUM, ITEMNAME, ITEMPRICE, QTY, EACH_CASE, SIZE) VALUES ('" + orderNumber + "', '" + itemNames + "', '" + itemPrices + "', '" + itemQty + "', '" + itemEC + "', '" + itemSizes + "')"
ibmdb.open(ibmdbconn, function (err,conn) {
if (err) return console.log(err);
conn.query(insertOrderDetails, function (err, data) {
if (err) console.log(err);
else console.log("data");
console.log(data)
conn.close(function () {
})
})
})
}
}
conn.close(function () {
})
})
})
}
the output I get when I log is correct, and it looks like this:
item names: 50 inch Water Hose
item prices: 39.99
item qty: 42
item ec: Each
item sizes: undefined
------
item names: Blue Rubber on Grey Polly Cotten Gloves
item prices: 9.99
item qty: 4
item ec: Pair
item sizes: L
------
but when I go and check my table, the outcome is different.
item names: Blue Rubber on Grey Polly Cotten Gloves
item prices: 9.99
item qty: 4
item ec: Pair
item sizes: L
------
item names: Blue Rubber on Grey Polly Cotten Gloves
item prices: 9.99
item qty: 4
item ec: Pair
item sizes: L
------
Upvotes: 1
Views: 205
Reputation: 2849
You don't need to open connection again in loop.
function orderDetails(req, res) {
var getOrder = "select * from " + tableName;
ibmdb.open(ibmdbconn, function (err, conn) {
if (err) return console.log(err);
conn.query(getOrder, function (err, data) {
if (err) console.log(err);
else console.log("data");
var itemNames = "";
var itemPrices = "";
var itemQty = "";
var itemEC = "";
var itemSizes = "";
if (data.length) {
for (var i = 0; i < data.length; i++) {
itemNames = data[i].ITEMDESC;
console.log("item names: " + itemNames);
itemPrices = data[i].PRICE;
console.log("item prices: " + itemPrices);
itemQty = data[i].QTY;
console.log("item qty: " + itemQty);
itemEC = data[i].EACH_CASE;
console.log("item ec: " + itemEC);
itemSizes = data[i].SIZE;
console.log("item sizes: " + itemSizes);
console.log("------");
let insertOrderDetails = "insert into ORDERDETAILS (ORDERNUM, ITEMNAME, ITEMPRICE, QTY, EACH_CASE, SIZE) VALUES ('" +
orderNumber + "', '" + itemNames + "', '" + itemPrices + "', '" + itemQty + "', '" + itemEC + "', '" + itemSizes + "')";
conn.query(insertOrderDetails, function (err, data) {
if (err) console.log(err);
else console.log("data");
});
}
}
conn.close(function () {});
});
});
}
Upvotes: 1