如何将JSON文件数据添加到Cloud Firestore + Flutter

f4t66c6m  于 2023-02-25  发布在  Flutter
关注(0)|答案(2)|浏览(128)

我有一个巨大的JSON数据与键和值对。像下面的代码我有这么多的数据在我的文件

{
     "Tamil Nadu": {
         "Chennai ": {
            "Anna Nagar": "600040 ",
            "New Avadi road": "600010 "
        },
        "Tiruvallur ": {
         "Ambattur": "600053 ",
           "Mogappair": "600037 "
        
    }

     },
    "Andhra Pradesh": {
        "Anantapur ": {
            "A Narayanapuram": "515001 ",
            "Achampalle": "515621 "
        },
        "Chittoor ": {
             "Agraharam": "517640 ",
             "Badikayalapalle": "517370 "
        }
    }
    
    
}

我怎样才能把这些庞大的数据作为一个集合和相应的文档添加到云firestore数据库中。

nzrxty8p

nzrxty8p1#

我不能100%确定您使用的是哪个Firebase数据库,因为您用firebase-realtime-databasegoogle-cloud-firestore标记了您的问题,并且您在标题中提到了"Cloud Firestore",所以让我们分享一些Firebase提供的两个数据库系统的解决方案。

对于Firestore

最简单的方法IMHO是从您的计算机使用Admin SDK:Admin SDK是一组服务器库,允许您从特权环境中与Firebase交互。
您可以创建一个JS文件,例如包含以下内容,并将其保存在您的计算机上。安装Node.js后,您可以使用以下命令运行该文件:node <filename>.

#!/usr/bin/node
const admin = require('firebase-admin');

admin.initializeApp({
    credential: admin.credential.cert("....json")
});

const data = {
    "Tamil Nadu": {
        "Chennai ": {
            "Anna Nagar": "600040 ",
            "New Avadi road": "600010 "
        },
        "Tiruvallur ": {
            "Ambattur": "600053 ",
            "Mogappair": "600037 "
        }
    },
    "Andhra Pradesh": {
        "Anantapur ": {
            "A Narayanapuram": "515001 ",
            "Achampalle": "515621 "
        },
        "Chittoor ": {
            "Agraharam": "517640 ",
            "Badikayalapalle": "517370 "
        }
    }
}

const promises = [];
const dataArray = Object.entries(data);

dataArray.forEach(d => {
     promises.push(admin.firestore().collection('abc').doc(d[0]).set(d[1]));
})
Promise.all(promises);

您可能需要调整JSON对象的解析,以处理所需的Firestore数据结构。
对于身份验证,您可以使用Firebase项目上具有Editor角色的服务帐户的凭据初始化Firebase Admin SDK

admin.initializeApp({
    credential: admin.credential.cert("....json")
});

要获得上图所示的json文件,请转到Firebase控制台,单击左上角的齿轮,选择"Service accounts"选项卡,然后单击底部的蓝色"Generate new private key"按钮。

对于实时数据库

以下是三种可能的方法:

1/使用命令行界面

CLI提供了几个命令来推送、更新或设置数据。另请参阅此Firebase blog article

2/使用JSON导入按钮

在控制台中,您会发现一个按钮,如下所示。您可以选择要上传数据的节点,但请注意,该节点中的所有现有数据将被覆盖。"

3/使用管理SDK

正如我们对Firestore所做的那样,您可以使用Admin SDK来管理实时数据库。

#!/usr/bin/node
const admin = require('firebase-admin');

admin.initializeApp({
    credential: admin.credential.cert("....json") // See below
});

const data = {
    "Tamil Nadu": {
        "Chennai ": {
            "Anna Nagar": "600040 ",
            "New Avadi road": "600010 "
        },
        "Tiruvallur ": {
            "Ambattur": "600053 ",
            "Mogappair": "600037 "
        }
    },
    "Andhra Pradesh": {
        "Anantapur ": {
            "A Narayanapuram": "515001 ",
            "Achampalle": "515621 "
        },
        "Chittoor ": {
            "Agraharam": "517640 ",
            "Badikayalapalle": "517370 "
        }
    }
}

admin.database().ref('....').set(data);

请注意,如果你试图一次性上传一个非常大的数据集,你可能会遇到数据库错误。然后你需要分块上传。

ca1c2owp

ca1c2owp2#

尝试https://firefoo.app/我刚刚开始使用它,它似乎工作得相当不错

相关问题