exports.OrderPlace = (req, res) => {
const all_product = req.body.product_info;
let meta = [];
all_product.forEach((element) => {
Ticket.find({ _id: element.product_id }, function (err, docs) {
if (err) return handleError(err);
if (docs[0]._id == element.product_id) {
if (element.quantity < docs[0].quantity) {
meta.push({
cart_id: element.id,
pro_id: element.product_id,
quantity: element.quantity " Asking quentity is not available!",
});
}
}
});
});
console.log(meta);
};
I'm trying to push
cart_id
,pro_id
,quantity
. its loging me empty value please help
Im expecting
console.log(meta)
values like
[
{
cart_id: "63db8665ba7126c2b35fb231",
pro_id: "63d025a8eefcf49cdcdd5472",
quantity: "36 Asking quentity is not available!",
},
{
cart_id: "63dbc2a7fbf7daf48052189e",
pro_id: "63ce4393c3433881173d1502",
quantity: "40 Asking quentity is not available!",
}
]
CodePudding user response:
wrap the whole code block inside an async function, and use await inside the function to wait for the result of the Ticket.find operation.
exports.OrderPlace = async (req, res) => {
const all_product = req.body.product_info;
let meta = [];
let flag = "";
for (const element of all_product) {
const docs = await Ticket.find({ _id: element.product_id }).exec();
if (docs[0]._id == element.product_id) {
if (element.quantity > docs[0].ticket_quantity) {
flag = "false";
meta.push({
cart_id: element.id,
pro_id: element.product_id,
quantity: element.quantity " Asking quentity is not available!",
});
}
}
}
console.log({ flag: flag, meta });
};
CodePudding user response:
The easiest way that I found to manipulate the array of objects is using the array methods like filter, map etc...
Maybe following code helps you
exports.OrderPlace = (req, res) => {
const all_product = req.body.product_info;
let meta = [];
all_product.forEach((element) => {
Ticket.find({ _id: element.product_id }, function (err, docs) {
if (err) return handleError(err);
element = element.filter((item) => {
return (docs[0]._id == element.product_id && element.quantity < docs[0].quantity)
})
meta = element.map((item) => {
return {
cart_id: element.id,
pro_id: element.product_id,
quantity: element.quantity " Asking quentity is not available!",
}
});
});
});
console.log(meta);
};