node.js - Nodejs的多个发布请求
问题描述
我对如何一个接一个地发出发布请求而不用尽服务器资源感到有些困惑。我正在尝试重新构建大量数据并将其一一发布到新的 Mongoose 数据库中,我正在使用 mac pro 服务网关。以下是我的一些代码:
http.get(option, (res) => {
res.on('data', function (chunk) {
str += chunk;
});
res.on('end', async function() {
var data = [];
data = await JSON.parse(str);
*// code is sucessfully till here, all data is received and parse properly*
data.forEach(item => {
var newData = item;
// console.log(newData);
postData(dataCat, newData);
// console.log(item);
})
// console.log(str);
});
str = "";
});
function postData(dataCat, newData) {
// option = 'http://localhost:3008/pbapi/' + dataCat;
// console.log(newData);
var post_options = {
host: '192.168.1.155',
port: '3008',
path: '/pbapi/' + dataCat,
method: 'POST',
headers: {
'Content-Type': 'application/JSON'
}
};
var post_req = http.request(post_options, function(res) {
res.setEncoding('utf8');
res.on('end', function (chunk) {
console.log('Response: ' + chunk);
});
});
post_req.write(newData);
post_req.end();
}
** postData() 针对单个 JSON 对象进行测试 forEach 循环仅在数据长度低于 2000 时有效(我只测试成功到 2000 年,在 2500 年失败)。
错误代码:'ENFILE' 如果我为 forEach 循环输入 2500 及以上
解决方案
如果你想一个一个地提出请求,你应该把你的帖子包裹在 Promise 中,然后等待,完成后,再做下一个 Promise。
它称为承诺。你可以在这里阅读
推荐阅读
- c++ - C++ Cereal:如何在不知道其 polymorphic_id 的情况下加载多态类?
- elasticsearch - 按 ElasticSearch 中嵌套数组中的值排序并交错结果
- mongodb - 更新简单的 mongodb 对象数组
- r - 根据列表的值重命名数据框列
- sql - MS Access SQL 选择顶部查询
- prolog - 是否应该在定义加法的规则中交换第一个和第二个参数?
- django - 堆叠内联 2 个模型,它们对另一个模型具有共同的 onetoone 字段
- python - 多个正在运行的脚本无法使用 np.load/np.save 覆盖相同的 .npy 文件
- sql - 你能帮我解决这个简单的连接问题吗?我是 sql 新手,所以不知道这有什么问题
- visual-studio - Visual Studio 文本编辑器停止突出显示 .c 文件中出现的所有符号