我想在Cloud Firestore中的某个地方提取和写入一些数据,所以我编写了一个调度程序函数,到目前为止运行良好,但没有做太多。
对于我的下一步,我想了解当这个函数运行时,它是否同时获得所有集合中的所有文档?还是一个接一个地遍历集合?我需要知道的原因是,我想创建一些变量,并在集合更改时重置它们。
我目前的处理方式是:
exports.schFun = rf.pubsub.schedule('0 6 * * *')
.timeZone('Europe/London') // Users can choose timezone
.onRun(async (context) => {
// Should these be declared here?
let totalNumAccepted = 0;
let totalRevenueAccepted = 0.0;
let totalNumRejected = 0;
let totalRevenueRejected = 0.0;
let postcode = [];
let timeOrderPlaced = new Date();
const querySnapshot = await db.collectionGroup("open_orders") // This is separate for each store
.where('complete', '==', true)
.get();
querySnapshot.forEach((doc) => {
// Here onwards I want to fill the above variables with data fields in documents and reset the variables when "open_orders" collection changes...
当这个函数运行时,它是否同时获取所有集合中的所有文档?
是的,确实如此。快照将包含来自所有集合和名为"的子集合的所有内容;open_orders";。
您不应该假定文档以任何方式进行了分组。如果您需要排序,您应该根据文档的一些共同字段来明确排序。
如果你想要基于子集合的嵌套进行某种分组,你应该自己查看每个文档,然后找出它属于哪个组。也许你想检查每个DocumentSnapshot的DocumentReferenceref
字段,看看它来自哪里,自己对它们进行分组,然后迭代组。