如何通过集合查询更新未知ID的Firebase Firestore文档指定字段
Firestore 不支持直接对查询结果链式调用update方法,你需要先执行查询拿到匹配的文档实例,再调用文档对应的更新接口完成操作。
你可以参考以下代码实现需求:
val db = FirebaseFirestore.getInstance() db.collection(Constants.REDEEM_CODE) .whereEqualTo("key", key) .get() .addOnSuccessListener { querySnapshot -> // key字段唯一,仅需取首个匹配的文档 if (!querySnapshot.isEmpty) { val targetDocRef = querySnapshot.documents.first().reference targetDocRef.update("x", 0) .addOnSuccessListener { // 此处添加更新成功的处理逻辑 } .addOnFailureListener { e -> // 此处添加更新失败的异常处理逻辑 } } else { // 此处添加无匹配key文档的处理逻辑 } } .addOnFailureListener { e -> // 此处添加查询请求失败的异常处理逻辑 }
补充说明
- 如果你需要保证更新操作的原子性,避免并发修改冲突,可以将更新逻辑替换为Firestore事务实现。
- 如果后续业务逻辑变更可能出现重复的key值,需要自行添加多匹配文档的判断处理。
内容的提问来源于stack exchange,提问作者Tehleel Mir
相关产品推荐
相关产品推荐

