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

Firestore引用字段查询失效:Query Builder及JS代码均无结果

问题原因及解决方案

你的核心问题是用字符串直接匹配Firestore的Reference类型字段,Firestore的Reference是特殊的对象类型,和字符串(哪怕是引用的路径字符串)不会判定为相等,所以查询无结果。

正确的做法是先构建对应的DocumentReference对象,再用这个对象作为查询条件的值:

const db = new Firestore({ projectId: projectId.trim() });
// 先创建用户的DocumentReference对象
const userRef = db.doc('/users/Ja6VILgvb3N1b4KTL0Pmthlwcrr2');
// 用这个对象作为查询条件
const offersReadSnapshot = await db.collection('offersread').where('userRef', '==', userRef).get();

如果要同时匹配offerRef和userRef,只需要添加第二个where条件即可(这种等值组合查询不需要额外创建索引,Firestore会自动支持):

const userRef = db.doc('/users/Ja6VILgvb3N1b4KTL0Pmthlwcrr2');
const offerRef = db.doc('/offers/[你的优惠文档ID]');
const offersReadSnapshot = await db.collection('offersread')
  .where('userRef', '==', userRef)
  .where('offerRef', '==', offerRef)
  .get();

你可以在Firestore控制台查看offersread集合里的文档,确认userRef字段的类型是Reference而非字符串,这也能直观解释为什么字符串无法匹配成功。

内容的提问来源于stack exchange,提问作者sjordan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:22:04