Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
如何定期将大型JSON数据集导入云Firestore?_Json_Firebase_Flutter_Parsing_Google Cloud Firestore - Fatal编程技术网

如何定期将大型JSON数据集导入云Firestore?

如何定期将大型JSON数据集导入云Firestore?,json,firebase,flutter,parsing,google-cloud-firestore,Json,Firebase,Flutter,Parsing,Google Cloud Firestore,我正在尝试导入带有180k记录的JSON。正如您在这段代码中看到的,每次运行我可以上载500条记录,但我需要定期上载180k条记录 我正在努力实现的目标: factory Academician.fromJson(Map<String, dynamic> json) => Academician( // Using this to parse data from JSON, // rating and reviewList does not e

我正在尝试导入带有180k记录的JSON。正如您在这段代码中看到的,每次运行我可以上载500条记录,但我需要定期上载180k条记录

我正在努力实现的目标:

factory Academician.fromJson(Map<String, dynamic> json) => Academician(
        // Using this to parse data from JSON, 
        // rating and reviewList does not exist in JSON, 
        // that's why i need custom model 
        name: json["name"] ?? "",
        designation: json["designation"] ?? "",
        field: json["field"] ?? "",
        universityName: json["university"] ?? "",
        department: json["department"] ?? "",
        rating: 0,
        reviewList: [],
      );
parseJsonFromAssets('json/akademik_kadro.json')
        .then((value) => value['Sayfa1'].forEach((value) {
              academicianList.add(Academician.fromJson(value));
            }))
        .then((value) {
            setState(() {
                for (int z = 0; z < 500; z++) {
                    //500 is the single time upload limit to Cloud Firestore 
                    //I guess
                    dbOperation.addToCollection(academicianList[z]);
            }
          });
        });
  • 解析JSON(完成)
  • 从每个JSON元素创建一个模型(完成)
  • 将此文件上载到Cloud Firestore(已完成,但每个文件有500个)
  • 型号工厂:

    factory Academician.fromJson(Map<String, dynamic> json) => Academician(
            // Using this to parse data from JSON, 
            // rating and reviewList does not exist in JSON, 
            // that's why i need custom model 
            name: json["name"] ?? "",
            designation: json["designation"] ?? "",
            field: json["field"] ?? "",
            universityName: json["university"] ?? "",
            department: json["department"] ?? "",
            rating: 0,
            reviewList: [],
          );
    
    parseJsonFromAssets('json/akademik_kadro.json')
            .then((value) => value['Sayfa1'].forEach((value) {
                  academicianList.add(Academician.fromJson(value));
                }))
            .then((value) {
                setState(() {
                    for (int z = 0; z < 500; z++) {
                        //500 is the single time upload limit to Cloud Firestore 
                        //I guess
                        dbOperation.addToCollection(academicianList[z]);
                }
              });
            });
    
    工厂院士.fromJson(Map json)=>院士(
    //使用它来解析JSON中的数据,
    //JSON中不存在评级和审核列表,
    //这就是为什么我需要定制模型
    名称:json[“名称”]??“,
    名称:json[“名称”]??“,
    字段:json[“字段”]??“,
    大学名称:json[“大学”]??“,
    部门:json[“部门”]??“,
    评级:0,
    评审名单:[],
    );
    
    解析并上传到云Firestore:

    factory Academician.fromJson(Map<String, dynamic> json) => Academician(
            // Using this to parse data from JSON, 
            // rating and reviewList does not exist in JSON, 
            // that's why i need custom model 
            name: json["name"] ?? "",
            designation: json["designation"] ?? "",
            field: json["field"] ?? "",
            universityName: json["university"] ?? "",
            department: json["department"] ?? "",
            rating: 0,
            reviewList: [],
          );
    
    parseJsonFromAssets('json/akademik_kadro.json')
            .then((value) => value['Sayfa1'].forEach((value) {
                  academicianList.add(Academician.fromJson(value));
                }))
            .then((value) {
                setState(() {
                    for (int z = 0; z < 500; z++) {
                        //500 is the single time upload limit to Cloud Firestore 
                        //I guess
                        dbOperation.addToCollection(academicianList[z]);
                }
              });
            });
    
    parsejsonfromsets('json/akademik_kadro.json'))
    .然后((值)=>value['Sayfa1'].forEach((值){
    academicianList.add(Academician.fromJson(value));
    }))
    .然后((值){
    设置状态(){
    对于(intz=0;z<500;z++){
    //500是云Firestore的单次上传限制
    //我想
    dbOperation.addToCollection(academicianList[z]);
    }
    });
    });
    
    您似乎已达到500的上限

    极限 细节 最大API请求大小 10 MiB 可传递给提交操作或在事务中执行的最大写入数 500 在提交操作或事务中可以对单个文档执行的最大字段转换数 500
    因此,我必须为此使用云函数?如果您想安排导入,那么是的。