【问题标题】:send multiple requests in parallel并行发送多个请求
【发布时间】:2018-01-16 10:09:21
【问题描述】:

我必须在两个数据库(Mongo 和 Oracle)之间架起一座桥梁(脚本)。

我在我的 MONGO 数据库的三个不同集合中运行三个查找查询。

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

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

我从我对这个列表进行处理的每个集合中检索文档列表(例如:平均)。

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

我与 Oracle 建立了连接并保留了这一行。

我想并行运行对 mongo 的查询。在三个请求和处理结束时。我创作我的录音并将其保存在我的数据库中。

我有异步,但它不起作用。也有等待。函数(脚本)在请求处理之前结束

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 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
}

【问题讨论】:

  • 显示你的代码
  • 请包含与实际请求相关的代码。
  • 你试过Promise.all([ c_1.find({}), c_2.find({}), c_3.find({}) ]).then(writeToOracle)吗?
  • 我已经在答案中显示了代码

标签: javascript node.js mongodb express ecmascript-6


【解决方案1】:
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 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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2022-07-26
    • 2020-08-12
    • 2019-12-11
    • 2012-01-19
    相关资源
    最近更新 更多