Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 生成包含数百万对象的大型JSON文件_Javascript_Node.js_Json - Fatal编程技术网

Javascript 生成包含数百万对象的大型JSON文件

Javascript 生成包含数百万对象的大型JSON文件,javascript,node.js,json,Javascript,Node.js,Json,我希望这是一个提出这个问题的合适地方,而且这不是一个不可能的问题,但我正在从事一个主要使用javascript的项目,我想知道是否有一种方法可以生成一个巨大的JSON文件,其中只包含一个对象数组,但可以容纳说。。。超过十亿个物体!这些对象实际上只包含1>某些inputNum中的数字(例如,inputNum可以是类似9999999999的数字)。这样,我和我的团队就不必一直数到非常大的数字,不必一直数到一个数组,也不必在工作和计算数据时不断出现内存泄漏。我们的数据非常大,而且是令人讨厌的数字 我有

我希望这是一个提出这个问题的合适地方,而且这不是一个不可能的问题,但我正在从事一个主要使用javascript的项目,我想知道是否有一种方法可以生成一个巨大的JSON文件,其中只包含一个对象数组,但可以容纳说。。。超过十亿个物体!这些对象实际上只包含1>某些inputNum中的数字(例如,inputNum可以是类似9999999999的数字)。这样,我和我的团队就不必一直数到非常大的数字,不必一直数到一个数组,也不必在工作和计算数据时不断出现内存泄漏。我们的数据非常大,而且是令人讨厌的数字

我有创建json对象并推送它的代码,它可以工作,但似乎无法继续计数超过某个大的数字(999999是我能得到的最大值),然后我的内存用完了,无法完成任务。我试着将JSON分解成可能的“块”,这样我就可以将它们“缝合”在一起,哈哈,但是当我试图从一个高的数字开始计数时,比如说:999999到99999999,以继续我的顺序计数,我的控制台崩溃了

我知道这需要大量的写入和推送,这也不适用于消费者,它将存储在我们的客户端以及专用存储设备上,因此文件大小不成问题。这是Javascript可能的任务吗?这可能是执行此任务的解决方案吗

我的对象示例仅供参考:

再说一次,我知道这很疯狂!它甚至可能不必是那么高的一个数字,但我可以计算并推送到一个JSON文件的最高值是多少?谢谢你的帮助,谢谢

代码如下:

const fs = require("fs");

let inputNum = 9999999;

async function readSequenceJSON() {
  let data = await fs.promises.readFile("./numberline.json");
  return JSON.parse(data);
}

function writeSequenceJSON(data) {
  let str = JSON.stringify(data);
  return fs.promises.writeFile("./numberline.json", str);
}

async function nextSequence(inputNum) {
  let data = await readSequenceJSON();

  for (let i = 0; i <= inputNum; i++) {
    let iSquared = i + i;

    data.push({ i, iSquared });
  }

  writeSequenceJSON(data);
}

nextSequence(inputNum)
  .then(() => {
    console.log("done");
  })
  .catch((err) => {
    console.log(err);
  });

const fs=require(“fs”);
设inputNum=9999999;
异步函数readSequenceJSON(){
让data=wait fs.promises.readFile(“./numberline.json”);
返回JSON.parse(数据);
}
函数writeSequenceJSON(数据){
让str=JSON.stringify(数据);
返回fs.promises.writeFile(“./numberline.json”,str);
}
异步函数nextSequence(inputNum){
让data=wait readSequenceJSON();
for(设i=0;i{
控制台日志(“完成”);
})
.catch((错误)=>{
控制台日志(err);
});

您已经有了答案

这一定是内存问题

没有像这样的最高值,我可以计数并推送到一个JSON文件中


不要将JSON数据保存在内存中,而是将它们保存在DB中。MongoDB旨在以JSON格式提供数据。

您已经有了答案

这一定是内存问题

没有像这样的最高值,我可以计数并推送到一个JSON文件中


不要将您的JSON数据保存在内存中,而是将它们保存在数据库中。MongoDB旨在以JSON格式提供数据。

我非常感谢您的回答,现在可以登录MongoDB。请查看我上面的代码,了解我如何为MongoDB做准备的建议。谢谢!@KingMuze
npm安装MongoDB
可能是您的第一步。您可以推送您的每个JSON使用顺序主键向DB对象。然后你可以使用
inputNum
进行引用,我想。我很感谢你的回答,现在可以登录MongoDB了。任何关于我上面的代码的建议,我如何为MongoDB做准备?谢谢!@KingMuze
npm安装MongoDB
可能是你的第一步。你可以推送我的每个人我们的JSON对象使用顺序主键连接到数据库。然后你可以使用
inputNum
进行引用,我猜。