You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:05:10