Firestore文档查询失败且无控制台日志,请求排查问题
Firestore文档查询失败且无控制台日志,请求排查问题
看起来你的查询有两个关键问题,导致了失败却看不到日志,我帮你拆解下:
核心错误:对单个文档快照误用了
forEach方法
你通过db.collection('Settings').doc("Category")获取的是单个文档的引用,调用get()后返回的是DocumentSnapshot对象,而非查询集合时得到的QuerySnapshot。单个文档快照并没有forEach方法,你强行调用这个方法会直接抛出错误,触发catch块。针对单个文档的正确写法应该直接读取数据,不需要遍历:
var settings = []; const queryGetSettings = db.collection('Settings').doc("Category"); queryGetSettings.get() .then(docSnapshot => { if (docSnapshot.exists) { // 先判断文档是否存在,避免空数据报错 settings.push({ category: docSnapshot.data().CategorySettings }); } else { console.log("指定的Category文档不存在哦"); } res.json({ "ack": "success", "settings": settings }); }) .catch(err => { console.error("查询出错详情:", err); // 关键:加上这句才能在控制台看到错误 res.json({ 'ack': "failure", 'error': err.message, 'API': "getSettingsUserChceck" }); });为什么看不到控制台日志?
你当前的catch块只给前端返回了错误响应,但没有把错误信息输出到控制台。加上console.error("查询出错详情:", err)后,不管是本地开发控制台还是Firebase后台的日志面板,都能看到具体的错误原因,这对排查问题至关重要。
额外提醒:如果你的Settings集合下是多个分类文档,而非单个Category文档,那你应该用collection('Settings').where(...)这类集合查询,这时才需要用forEach遍历QuerySnapshot。但从你的代码逻辑看,你是想读取单个文档,所以上面的修改就能解决问题啦。
内容来源于stack exchange
相关产品推荐
相关产品推荐

