我有一个应用程序向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 - ay
和bx -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"
键。
我希望这一点足够明确并尊重规则......另外,非常感谢您的帮助!