我使用此代码将 Firestore 数据导出到存储桶文件夹:
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://PROJECT_NAME.firebaseio.com"
});
const client = new admin.firestore.v1.FirestoreAdminClient({});
async function doFirestoreBackup() {
try {
const response = await client.exportDocuments({
name: client.databasePath('PROJECT_NAME','(default)'),
outputUriPrefix: 'gs://PROJECT_NAME.appspot.com/firestore-backups/2020-12-02-T-12H00/'
});
console.log(response);
}
catch(err) {
console.log(err.msg);
}
}
我可以以某种方式将导出的数据保存到我的电脑上的本地路径吗?而不是在
outputUriPrefix
上使用存储桶文件夹?
这是我找到的相关文档,但我不明白我想要的是否可能:
https://googleapis.dev/nodejs/firestore/latest/google.firestore.admin.v1.ExportDocumentsRequest.html
有关 导出数据的 Firestore 文档开头为:
导出操作会将数据库中的文档复制到 Cloud Storage 存储桶中的一组文件。
因此,似乎可以肯定它只能导出到 Cloud Storage 存储桶。如果您想在本地获取导出的数据,则必须首先运行导出过程,然后使用
gcloud
CLLI 等工具或通过 Cloud Storage API 将数据从存储桶检索到本地系统。
当然!要将 Firestore 数据导出到本地模拟器,请按照以下步骤操作:
第 1 步:登录 Firebase 或 Google Cloud
firebase login
或
gcloud auth login
第 2 步:连接到您的项目
firebase use your-project-name
或
gcloud config set project your-project-name
第 3 步:将生产数据导出到 Google Cloud Storage 存储桶文件夹
gcloud firestore export gs://your-project-name.appspot.com/<your-choosen-folder-name>
第4步:将存储桶文件夹复制到本地机器
gsutil -m cp -r gs://your-project-name.appspot.com/<your-choosen-folder-name> /path/to/some/folder
这一系列命令可确保将 Firestore 数据顺利导出到本地模拟器。确保将
<your-choosen-folder-name>
和 /path/to/some/folder
替换为您所需的文件夹名称和本地文件路径。
编码愉快!如果您还有任何疑问或遇到问题,请随时询问。