0

I have to make a bridge (script) between two databases (Mongo and Oracle).

I run three find queries on my MONGO database in three different collections.

 Collection 1 = [{
  name: 'Toto',
  from: 'Momo',
  note: 5,
  cat: 'noCategori'
 }]

 Collection 2 = [{
  city: 'london',
  country: 'UK'
 }]
 ...etc

I retrieve lists of documents from each collection I make a treatment on this list (Ex: average).

RowToSend = {
  name: 'Toto',
  note: 17, // average all document
  city: 'london'
}

I establish a connection with Oracle and I persist this row.

I would like to run queries to mongo in parallel. at the end of the three requests and treatments. I compose my recording and I persist it on my database.

I have with async but it does not work. With await too. the function (Script) ends before the request is processed

function RequestOne(dateStart, dateEnd, RowToInsert) =

     CollectionOne.find({
        AQS_REF_TIME_EVENT_MSR: {
            $gte: startInterv,
            $lte: endInerv
        },

    })
    .exec((err, arrAqsOneHourMoy) => {
      if (err)
         return err;
      if (arrAqsOneHourMoy) {
         AttributeOneAverge = 0;
         AttributeTwoAverage = 0;

       for (i = 0; i < arrAqsOneHourMoy.length; i++) {
                AttributeOneAverge = (arrAqsOneHourMoy[i].AttributeOne + AttributeOneAverge);
                AttributeTwoAverge = (arrAqsOneHourMoy[i].AttributeTwo + AttributeTwoAverge);
            }

      RowToInsert.AttributeOne = ((AttributeOneAverge) / (i + 1));
      RowToInsert.AttributeOne = (AttributeTwoAverge) / (i + 1);
      }
    })
} 

Function TWO .. same logic

Globale function :

function GenericFunction(time, sensorID, TEST_oracle_save) {
var d = new Date(2018, 00, 03, 11, 00, 00, 000);
var x = d.toISOString();

var d2 = new Date(2018, 00, 03, 11, 59, 59, 999);
var y = d2.toISOString();


RequestOne(x, y, TEST_oracle_save);
RequestTwo(x, y, TEST_oracle_save);


//Connexion to ORACLE DATABASE 

//Connexion etablished 

// Persist TEST_oracle_save on field Oracle
}
Alex Blex
  • 34,704
  • 7
  • 48
  • 75
Anis Mokeddes
  • 61
  • 1
  • 9

1 Answers1

0
function RequestOne(dateStart, dateEnd, RowToInsert) =

     CollectionOne.find({
        AQS_REF_TIME_EVENT_MSR: {
            $gte: startInterv,
            $lte: endInerv
        },

    })
    .exec((err, arrAqsOneHourMoy) => {
      if (err)
         return err;
      if (arrAqsOneHourMoy) {
         AttributeOneAverge = 0;
         AttributeTwoAverage = 0;

       for (i = 0; i < arrAqsOneHourMoy.length; i++) {
                AttributeOneAverge = (arrAqsOneHourMoy[i].AttributeOne + AttributeOneAverge);
                AttributeTwoAverge = (arrAqsOneHourMoy[i].AttributeTwo + AttributeTwoAverge);
            }

      RowToInsert.AttributeOne = ((AttributeOneAverge) / (i + 1));
      RowToInsert.AttributeOne = (AttributeTwoAverge) / (i + 1);
      }
    })
} 

Function TWO .. same logic

Globale function :

function GenericFunction(time, sensorID, TEST_oracle_save) {
var d = new Date(2018, 00, 03, 11, 00, 00, 000);
var x = d.toISOString();

var d2 = new Date(2018, 00, 03, 11, 59, 59, 999);
var y = d2.toISOString();


RequestOne(x, y, TEST_oracle_save);
RequestTwo(x, y, TEST_oracle_save);


//Connexion to ORACLE DATABASE 

//Connexion etablished 

// Persist TEST_oracle_save on field Oracle
}
Anis Mokeddes
  • 61
  • 1
  • 9