For let, not incrementing if there is a same item in array

前端 未结 1 494
长情又很酷
长情又很酷 2020-12-12 07:50

I\'m trying to increment an item in my mongodb using find $in array, but when there is a same item in an array for example [\'apple\',\'apple\'] it should incre

相关标签:
1条回答
  • 2020-12-12 08:34

    I know this has been a while, but this might still help you (or maybe someone else), so...

    Perhaps you can try this:

    var newValue = 1;
    var newSerialcode = req.body.serialCode; 
    var newBloodgroup = req.body.blood_group; 
    var newGetbloodcomponent = req.body.blood_component; 
    
    Bloodinventory.find({ blood_component : { $in : newGetbloodcomponent} ,blood_group: { $in :newBloodgroup},chapter: { $in: [id] }}, function(err, bloodinventoryDocs) {
    
        for(let bloodinventory of bloodinventoryDocs) {
            // === change starts here === //
                // filter into a new array all the places where this particular blood component occurs
                let all_occurences = newGetbloodcomponent.filter(function(b){
                    return b === bloodinventory.blood_component;
                });
    
                // to avoid incurring unnecessary processing and/or database costs, only continue if an occurence was actually found
                if(all_occurences.length > 0){
                    // increment it by that amount (which will be the number of items filtered into the array)
                    bloodinventory.num_stock = bloodinventory.num_stock + all_occurences.length;
                    // ^^ you could also write this as 'bloodinventory.num_stock += all_occurences.length;'
                
                    bloodinventory.save(function(err) {
                        if (err) {
                            console.log(err); 
                        } else {
                            console.log('success'); 
                        }
                    });
                };
            // === change ends here === //
        }  
    });
    
    0 讨论(0)
提交回复
热议问题