Firebase Cloud Functions中Firestore get方法的计费规则咨询:每个get操作是否需单独付费?
Firebase Firestore 计费规则:多个
get()操作的计费说明 嘿,我来帮你理清这个计费问题——你代码里的4个get()方法会被算作4次独立的Firestore读取操作,需要分别支付费用。
核心原因:
Firestore的计费是基于单个文档读取请求来统计的,不管你是在Cloud Function、客户端还是其他环境调用get(),每一次成功发起并完成的文档读取请求(哪怕目标文档不存在),都会被计入一次读取次数。
结合你的代码分析:
你代码里的这4个await ...get()调用,每一个都是独立的读取操作:
await db.doc(videos/${videoID}).get();→ 1次读取await db.doc(meinprofilsettings/${author}).get();→ 第2次读取await db.doc(Recovering/${videoowner}).get();→ 第3次读取await db.doc(Recovering/${author}).get();→ 第4次读取
小优化建议:
虽然计费次数没法减少,但你可以用Promise.all()把这些串行的get()改成并行执行,这样能大幅缩短Cloud Function的运行时间(间接节省函数的执行时长费用),代码示例如下:
// 并行获取所有需要的文档,执行效率更高,计费次数仍为4次 const [videouid, userSnap, recoveringuser1, recoveringuser2] = await Promise.all([ db.doc(`videos/${videoID}`).get(), db.doc(`meinprofilsettings/${author}`).get(), db.doc(`Recovering/${videoowner}`).get(), db.doc(`Recovering/${author}`).get() ]);
另外要注意:如果某个get()请求的文档不存在,Firestore依然会收取一次读取费用,这点在设计逻辑时可以留意。
内容的提问来源于stack exchange,提问作者Michael m.
相关产品推荐
相关产品推荐

