使用Plugin.CloudFirestore查询不存在的Firestore文档返回1,该值是否为标准标识?
关于Plugin.CloudFirestore查询不存在文档返回值的问题
- Firestore官方SDK的标准行为:查询不存在的文档时,会返回一个
DocumentSnapshot实例,其中Exists属性为false,而Id属性会返回你查询时传入的文档ID(即示例中的nonExistentId),不会返回int类型的1。 - Plugin.CloudFirestore作为Firestore的Xamarin封装插件,设计上对齐官方SDK行为,因此不存在将
1定义为“文档不存在”标准值的情况。 - 你得到int类型的
1,大概率是代码调用错误导致的:比如误将GetAsync()任务的状态码(而非DocumentSnapshot的Id)当成返回值,或是在异常捕获逻辑中返回了默认值1,而非正确获取DocumentSnapshot对象的属性。
正确的查询写法参考:
var snapshot = await CrossCloudFirestore.Current .Instance .Collection("myCollection") .Document("nonExistentId") .GetAsync(); if (snapshot.Exists) { // 文档存在,获取ID var docId = snapshot.Id; } else { // 文档不存在,执行对应逻辑 }
内容的提问来源于stack exchange,提问作者Costas
相关产品推荐
相关产品推荐

