MongoDB云函数通过Firebase Admin读取Firestore数据快照大小不稳定
问题:MongoDB云函数读取Firestore数据返回数量不稳定
我有一个MongoDB云函数,需要通过Firebase Admin SDK读取Firestore中trips集合的数据,该集合约有7000个文档。但每次启动函数时,返回的文档数量均不固定,有时为15个,有时为23个。
我的代码如下:
var admin = require('firebase-admin'); admin.initializeApp({ credential: admin.credential.cert(serviceAccount), }); const db = admin.firestore(); const snapshot = await db .collection('trips') .limit(30) .get(); console.log(snapshot.size);
已确认调用的是正确项目,因为每次启动函数时项目用量都会增加。
更新1
在本地机器用Node脚本运行相同代码,无任何问题。推测问题出在MongoDB函数上,可能是函数提前终止了查询?
更新2
仅查询文档计数时结果正常;查询仅10个文档时也正常!怀疑是MongoDB函数执行时间过长导致的?
可能的原因及解决办法
- 函数超时终止:MongoDB云函数有默认执行超时时间,如果Firestore查询未完成就触发超时,会导致只返回部分已获取的数据。可以在函数配置里延长超时时间(注意不超过平台允许的最大值)。
- 异步逻辑未正确等待:检查函数入口是否确保等待
get()方法的Promise完全解析后再结束执行,避免函数提前退出导致查询中断。 - 资源配额限制:云函数的内存、CPU资源不足时,可能会限制查询的执行效率,导致无法完整获取30条数据。尝试提高函数的资源配置规格。
- 查询优化:即使本地正常,云环境下网络延迟可能影响查询,建议为trips集合的查询字段添加合适的索引(如果后续有过滤条件),或者尝试分批次小量获取数据,降低单次查询的负载。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

