如何用Plugin.CloudFirestore获取Firestore数组中的引用值?
问题修复方案
1. 先解决最直接的空引用问题
你代码里的referencedDocs被初始化为null,调用Add方法时必然触发空引用异常,导致代码直接中断,根本没法收集到任何文档快照。
把初始化代码改成这样:
List<IDocumentSnapshot> referencedDocs = new List<IDocumentSnapshot>();
2. 关于IDocumentReference类型的正确性
从你调试的信息来看,myRefs里的元素已经包含正确的Path、Id等属性,说明List<IDocumentReference>这个类型是没问题的,Plugin.CloudFirestore已经正确把Firebase里的引用数组反序列化了。
如果修复空引用后还是拿不到文档,可以试试手动用路径重建引用,验证是否能正常获取:
foreach (var myRef in myRefs) { var manualRef = CrossCloudFirestore.Current.Instance.Document(myRef.Path); var doc = await manualRef.GetAsync(); referencedDocs.Add(doc); }
额外排查方向
- 检查Firebase里存储的引用路径是否正确,确保这些引用指向的文档确实存在
- 确认你的应用拥有读取这些关联文档的Firebase权限
- 调试时打印每次循环的
myRef.Path,确认循环是否在遍历不同的引用(C# 5+的foreach不会有循环变量捕获问题,但可以确认下)
内容的提问来源于stack exchange,提问作者Costas
相关产品推荐
相关产品推荐

