Mongoose findOne() in a for loop using set if extist or put if doesn't

Viewed 67

In mongoose when i call find() function and update inside the find finction , the function iterate but data is not inserted into subarray it is inserted into root array.

this is my code

for (let k in listMed) {
    insertUpdate(listMed[k]);
}

Function

function insertUpdate(med) {
StockDB.findOne({ Medicine_name: med.Medicine_name }, function (err, element) {
    if (err) {
        console.log(err);
    }
    else {
        console.log(element);
        if (element != null) {
            element.MRP = med.MRP;
            element.Rate = (parseFloat(med.MRP) / parseFloat(med.PerCount));
            element.Items.push({
                Batch_no: med.Batch_no,
                Exp_date: med.ExpDate,
                Quantity: med.PerCount
            });
            element.save();
        }
        else {
            StockDB.insertMany({
                Medicine_name: med.Medicine_name,
                MRP: med.MRP,
                Rate: (parseFloat(med.MRP) / parseFloat(med.PerCount)),
                Items: [{
                    Batch_no: med.Batch_no,
                    Exp_date: med.ExpDate,
                    Quantity: med.PerCount
                }]
            });
            
        }
    }
});}

I want to store like this

[
    {
        Medicine_name: "Rantac 150",
        Price : "30",
        Items : [
                   {
                       Batch_no : b123,
                       Expiry_date : 22-02-2028,
                   }
                   
                   {
                       Batch_no : b113,
                       Expiry_date : 12-05-2027,
                   }

                   {
                       Batch_no : b153,
                       Expiry_date : 20-01-2024,
                   }
                ]
     }
]

But it is srore the data like this

[
    {
        Medicine_name: "Rantac 150",
        Price : "30",
        Items : [
                   {
                       Batch_no : b123,
                       Expiry_date : 22-02-2028,
                   }
                ]
     }
     
     {
        Medicine_name: "Rantac 150",
        Price : "30",
        Items : [
                   {
                       Batch_no : b113,
                       Expiry_date : 12-05-2027,
                   }
                ]
     }
     
     {
        Medicine_name: "Rantac 150",
        Price : "30",
        Items : [
                   {
                       Batch_no : b153,
                       Expiry_date : 20-01-2024,
                   }
                ]
     }
]

object is not push into the items array , it repeatedliy call insert function but 1st time when inserted element will be not null but it is still null

0 Answers
Related