我目前正在尝试构建一个云函数,将我的Firestore数据导出到存储桶。
我在Firebase DOC上找到的唯一一个关于如何做到这一点的例子:
https://googleapis.dev/nodejs/firestore/latest/v1.FirestoreAdminClient.html#exportDocuments
示例
const firestore = require('@google-cloud/firestore');
const client = new firestore.v1.FirestoreAdminClient({
// optional auth parameters.
});
const formattedName = client.databasePath('[PROJECT]', '[DATABASE]');
client.exportDocuments({name: formattedName})
.then(responses => {
const response = responses[0];
// doThingsWith(response)
})
.catch(err => {
console.error(err);
});
从这个例子中,似乎我需要安装@google-cloud/firestore
作为我的云函数的依赖项。
但是我想知道我是否可以使用onlyfirebase-admin
包访问这些方法。
我之所以这么想,是因为firebase-admin
已经有了@google-cloud/firestore
作为依赖项。
> firebase-admin > package.json
"dependencies": {
"@firebase/database": "^0.4.7",
"@google-cloud/firestore": "^2.0.0", // <---------------------
"@google-cloud/storage": "^3.0.2",
"@types/node": "^8.0.53",
"dicer": "^0.3.0",
"jsonwebtoken": "8.1.0",
"node-forge": "0.7.4"
},
问题:
有没有可能得到一个FirestoreAdminClient
的示例,并使用exportDocuments
方法只使用firebase-admin
?
或者我真的需要将@google-cloud/firestore
作为直接依赖项安装并直接使用它吗?
4条答案
按热度按时间j5fpnvbx1#
你访问管理客户端的方式是正确的,据我所知。
但是,您可能不会得到任何TypeScript/intellisense帮助,因为Firestore库实际上并没有为v1 RPC定义详细的类型。注意它们是如何用
any
类型声明的:https://github.com/googleapis/nodejs-firestore/blob/425bf3d3f5ecab66fcecf5373e8dd03b73bb46ad/types/firestore.d.ts#L1354-L1364mrphzbgm2#
下面是我使用的一个实现,它允许您根据firebase提供的模板https://firebase.google.com/docs/firestore/solutions/schedule-export执行任何需要执行的操作
在我的例子中,我从firestore中过滤出集合,我不希望调度程序自动备份
bzzcjhmw3#
以下是关于如何通过混合Cloud Scheduler、PubSub和Firebase Function https://firebase.google.com/docs/firestore/solutions/schedule-export来执行自动Firestore备份的完整代码解释(我使用它,效果非常好)
lf5gs5x24#
firebase-admin只是 Package Cloud SDK并重新导出其符号。您可以使用 Package 器,或直接使用Cloud SDK,甚至可以根据需要将两者结合使用。如果你想同时使用这两种方法,你必须在@google-cloud/firestore上声明一个显式的依赖项,以便能够直接将其导入到代码中。