如何在Firestore文档的memberFees map中添加新键?
解决Firestore中给Map字段添加新键的错误问题
错误原因很明确:你在更新map字段时用了斜杠/来表示嵌套路径,Firestore会把memberFees/${memberFeeId}当成文档路径的分段(比如Faculty/文档ID/memberFees),而文档引用必须是集合/文档这种偶数段结构,所以才会抛出段数为3的非法参数错误。
要给Firestore的Map字段添加新键,正确的嵌套路径分隔符是点号.,而不是斜杠。修改你的代码如下:
writeBatches.get(batchIndex).update( db.collection("Faculty").document(faculty.getId()), "memberFees." + memberFeeId, true );
另外,你也可以通过构建Map对象的方式来更新,这种方式在批量添加多个键时更直观:
Map<String, Object> updates = new HashMap<>(); updates.put("memberFees." + memberFeeId, true); // 如果要加多个键,继续put即可 // updates.put("memberFees.anotherFeeId", true); writeBatches.get(batchIndex).update( db.collection("Faculty").document(faculty.getId()), updates );
这两种写法都能正确识别memberFees是文档中的Map字段,并给它添加新的键值对。
内容的提问来源于stack exchange,提问作者Vince Ybañez
相关产品推荐
相关产品推荐

