Node.js / Mongoose:将信息发送到函数并识别要操作的信息

时间:2017-08-13 17:10:57

标签: javascript node.js mongodb mongoose operation

我有一个应用程序向3个不同的API REST服务器发出请求,收集和操作接收到对象的信息,并使用mongoose的模型发送不同Mongo集合的信息(每个API REST一个)。

我的目标是让一个函数在发送到MongoDB之前或同时(或之后)对不同的信息集进行操作。

以下是一个示例,其中包含2个正在检索并发送到db的具体对象:

对象1:

{
   "name": "X",
   "a": 10,
   "b": 9,
   "n": 1502642712481,
   "iname": "ix",
   "_id": "59907f34040eb562d8d11d8c"
}

Object2:

{
   "name": "Y",
   "n": 1502642712552,
   "iname": "ix",
   "_id": "59907f34040eb562d8d11d8d",
   "b": "10",
   "a": "9",
}

它们有自己的模型,并且正确地通过保存插入到MongoDB中,我想比较每个对象的“a”和“b”键(仅供参考:"iname"是两者的共同密钥对象和"n"是在返回请求时创建的时间戳。 我要在'a''b'上进行的操作类型是相对基础的数学(目前):ax - aybx -by

关于我如何做到这一点的任何想法?

现在,将每个对象保存到db的代码嵌套在一个无限循环中,如下所示:

async function loopY() {
  setTimeout(
    async function () {
      var list = ['Y']; 
      var data = await y(list); //<---- This is the call to wait whatever the request of Y will return
          data.forEach((object) => {
            if (object.name === 'Y') {
              var iname =  'ix'
            } else {
              var iname = 'N/A' };
            var tick = new Ymodel({
              mk: object.mk,
              name: object.name,
              a: object.a,
              b: object.b,
              n: object.n,
              iname: iname,
            });
            // tick.sendToCompare(); //<---- HERE I THOUGHT OF USING A FUNCTION FROM THE MODEL BUT NOT SURE HOW TO HANDLE THE DIVISION BETWEEN THE INFORMATION
            tick.save(function(err, tick) {
              if (err) return console.log(err);
              console.log(`[SUCCESS]: ${tick.name} added to db!`);
            });
          });
          loopY();
        }
  }, 1000); // <------- THE TIMEOUT HELPS ME MANAGE THE REQUESTS TO THE API SERVERS AND AVOID A "TOO MANY REQUESTS" ERROR.
};

loopY();

我对"X"loopX())具有完全相同的功能,但稍微不同的是它为对象添加了"sn"键。

我希望这一点足够明确并尊重规则......另外,非常感谢您的帮助!

0 个答案:

没有答案