Node.js 将大容量数组插入mongodb
我对nodejs是新手。 我想调用一个外部API,需要将其结果保存到mongo db集合 我的API URL如下所示:'https://example.com/test/?page=1' 默认情况下,调用URL时将加载第1页。 我需要动态地将页码从1更改为总页数 从API检索的结果包括每页50个结果: 结果如下所示Node.js 将大容量数组插入mongodb,node.js,mongodb,Node.js,Mongodb,我对nodejs是新手。 我想调用一个外部API,需要将其结果保存到mongo db集合 我的API URL如下所示:'https://example.com/test/?page=1' 默认情况下,调用URL时将加载第1页。 我需要动态地将页码从1更改为总页数 从API检索的结果包括每页50个结果: 结果如下所示 { page: 1, perPage: 50, count: 37232, status: 'OK', data: [{ name: 'Abc',
{
page: 1,
perPage: 50,
count: 37232,
status: 'OK',
data: [{
name: 'Abc',
email: 'tes@gmail.com',
dob: '2020-01-01',
country: 'US',
address: 'test',
city: 'nu'
},
{
name: 'Abcd',
email: 'tes1@gmail.com',
dob: '2020-02-01',
country: 'US',
address: 'test',
city: 'nu'
},
//similar 50 records altogether
]
}
var ApiUrl = 'https://example.com/test/?page=1';
request(ApiUrl,
function (err, res, body) {
if (!err && res.statusCode == 200) {
let jsonObj = JSON.stringify(res);
let resp = JSON.parse(JSON.parse(jsonObj).body);
var totalPageCount = resp.count / resp.data.length;
if (totalPageCount % resp.data.length > 0)
totalPageCount++;
} else {
console.log(err);
}
for (var k = 1; k <= totalPageCount; k++) {
var ApiUrlPerPage = 'https://example.com/test/?page=' + k;
request(ApiUrlPerPage, function (error, response, body) {
if (!error && response.statusCode == 200) {
let json = JSON.stringify(response);
let result = JSON.parse(JSON.parse(json).body);
for (var j = 0; j < result.data.length; j++) {
var todo = new userModel({
ticker: result.data[j].name
},
);
// Save it to database
todo.save(function (err) {
if (err)
console.log("Error:" + err);
})
}
} else {
console.log(error);
}
})
}
}
)
我的代码如下
{
page: 1,
perPage: 50,
count: 37232,
status: 'OK',
data: [{
name: 'Abc',
email: 'tes@gmail.com',
dob: '2020-01-01',
country: 'US',
address: 'test',
city: 'nu'
},
{
name: 'Abcd',
email: 'tes1@gmail.com',
dob: '2020-02-01',
country: 'US',
address: 'test',
city: 'nu'
},
//similar 50 records altogether
]
}
var ApiUrl = 'https://example.com/test/?page=1';
request(ApiUrl,
function (err, res, body) {
if (!err && res.statusCode == 200) {
let jsonObj = JSON.stringify(res);
let resp = JSON.parse(JSON.parse(jsonObj).body);
var totalPageCount = resp.count / resp.data.length;
if (totalPageCount % resp.data.length > 0)
totalPageCount++;
} else {
console.log(err);
}
for (var k = 1; k <= totalPageCount; k++) {
var ApiUrlPerPage = 'https://example.com/test/?page=' + k;
request(ApiUrlPerPage, function (error, response, body) {
if (!error && response.statusCode == 200) {
let json = JSON.stringify(response);
let result = JSON.parse(JSON.parse(json).body);
for (var j = 0; j < result.data.length; j++) {
var todo = new userModel({
ticker: result.data[j].name
},
);
// Save it to database
todo.save(function (err) {
if (err)
console.log("Error:" + err);
})
}
} else {
console.log(error);
}
})
}
}
)
var-ApiUrl=https://example.com/test/?page=1';
请求(APIRL,
功能(错误、恢复、正文){
如果(!err&&res.statusCode==200){
让jsonObj=JSON.stringify(res);
让resp=JSON.parse(JSON.parse(jsonObj.body));
var totalPageCount=resp.count/resp.data.length;
如果(totalPageCount%resp.data.length>0)
totalPageCount++;
}否则{
控制台日志(err);
}
对于(var k=1;k