下面是我的云函数,用于将 Firestore 导出到 GCP 存储桶。我正在尝试通过"collectionsToBackup"常量传递 CollectionID 名称,我通过将current_date附加到名称来创建,因为我的子集合名称的格式为:sub_collection_name_yyyymmdd。但是,该函数在执行时部署,它不会导出我的子集合:当天most_valuable_items_yyyymmdd。有人可以帮助我确定我的功能可能存在什么问题吗?
法典:
const firestore = require('@google-cloud/firestore');
const client = new firestore.v1.FirestoreAdminClient();
const bucket = 'gs://BUCKET_NAME'
const date_ob = new Date();
const date = ("0" + date_ob.getDate()).slice(-2);
const month = ("0" + (date_ob.getMonth() + 1)).slice(-2);
const year = date_ob.getFullYear();
const new_date= (year + month + date);
const collectionsToBackup= ("'" + "most_valuable_items" + "_" + new_date + "'");
exports.scheduledFirestoreBackup = (event, context) => {
const databaseName = client.databasePath(
// process.env.GCLOUD_PROJECT,
"f-2",
'(default)'
);
return client
.exportDocuments({
name: databaseName,
outputUriPrefix: bucket,
collectionIds: [collectionsToBackup]
})
.then(responses => {
const response = responses[0];
console.log(`Operation Name: ${response['name']}`);
return response;
})
.catch(err => {
console.error(err);
});
};
您的问题似乎与Firestore的信息查询和返回有关。正如社区中其他类似案例所解释的那样,您需要考虑Firestore中查询的限制。
此限制与允许您查询子集合的可能性和函数有关,以便将它们发送到您的存储桶。在 Firestore 中查询是一个浅层过程,遗憾的是,您无法一次返回整个集合及其自己的子集合。您将需要读取每个子集合,以便您拥有其数据和父集合。
因此,总而言之,这不是关于您的代码错误,而是关于更改您读取数据的方式(集合和子集合(,以便您加载数据,然后将其发送到存储桶。这个答案在这里澄清了更多关于可能性的信息。
让我知道这些信息是否澄清了您的疑虑!