Sunday, 19 March 2017

NodeJs - Nested Functions with a for loop which does not work properly inside

today my question is actually about the problem which happens due to loop which is not working properly but anyway, i am quite open to ideas if i have issues about designing.

app.post('/admin/earning/:multiplier', function (req, res) {

  var multiplier = req.params.multiplier;

  var now = new Date();

  var List=[];

  var dailySaving;

  //  Getting the investors emails(key) from the collection.

  db.getInvestorsFromValidatedInvests(function(err,result){

    if(err){console.log(err);}

    console.log(result);

    List = result;

    console.log('Inside the List scope'+List[0]);

    for(var i=0;i<List.length;i++){

      db.returnTotalInvestingfromValidatedInvests(List[i],function(err,rst){

      if(err){console.log(err);}

      console.log(rst);

      var dailySaving = ((rst*multiplier)/100);

      console.log('Daily Savings which is going to be added is that  :  ' +dailySaving);

      console.log(List[i]);

      db.multiplyInvestAndAddSavings(List[i],dailySaving,function(err,rest){

        if(err){console.log(err);}

        console.log(rest);

      });

    });

    }

    });

  res.json('Going to be Prepared...');
});

Here i am sharing you each of these database functions :

First function gets the owner e-mails from db and returns an array and then, i want to do some operations with each elements of this array and i decided to use for loop but it does not work properly.

Db.prototype.getInvestorsFromValidatedInvests = function(callback){
  MongoClient.connect("mongodb://xxxxxxx:xxxxxxx@ds9999.mlab.com:99986/xxxxxx", function (err, db) {
    if (err) { return console.dir(err); }
    db.collection('validatedInvests').distinct("owner",function(err,result){
      if(err){console.log(err); callback(err,null);}
      callback(null,result);
    });
    db.close();
});
}
Db.prototype.returnTotalInvestingfromValidatedInvests = function(owner,callback){
  MongoClient.connect("mongodb://xxxxxxxx:xxxxxxx@ds09999.mlab.com:9996/aslanservices", function (err, db) {
    if (err) { return console.dir(err); }
    db.collection('validatedInvests').find({"owner":owner}).toArray(function(err,result){
      var sum=0;
      if(err){console.log(err); callback(err,null);}
      for(var j=0;j<result.length;j++){
        sum+=parseInt(result[j].amount); 
      }
      callback(null,sum);
    });
    db.close();
});
}
Db.prototype.multiplyInvestAndAddSavings = function(owner,amount,callback){
  MongoClient.connect("mongodb://xxxxxx:xxxxxxx@ds99996.mlab.com:39996/aslanservices", function (err, db) {
    if (err) { return console.dir(err); }
    console.log('Db talking amount is'+amount);
    db.collection('investClients').updateOne({"email":owner},
    {
      $inc : {
        "savingsAccount" : +amount
      },
      
    },
    {
      upsert : true
    }
    ,function(err,result){
      if(err){callback(err,null);}
      callback(null,result);
    });
    db.close();
});
}


via ozrcevkasln

No comments:

Post a Comment