无效的文档引用。文档引用必须具有偶数个片段。

4
我正在使用以下代码查询一个文档集合。文档名称与设备名称相同。设备名称从API传递到文档中。当设备名称包含“/”字母时(例如Motorola C380/C385),我会遇到错误。
我收到了以下错误信息:

java.lang.IllegalArgumentException: Invalid document reference. Document references must have an even number of segments, but Mobiles/Motorola C380/C385 has 3

我知道这个错误是因为FireStore将斜杠后面的名称C385视为文档内的集合。我想知道如何解决这种情况,即文档名称可能包含“/”。我应该在将其插入我的集合之前检查并删除它,还是有更好的解决方案?
firebaseFirestore.collection("Mobiles").document(response.body().get(finalI).getDeviceName())
3个回答

4

试试这个

response.body().get(finalI).getDeviceName().toString().replace("/","_")

2

我能想到的最简单的方法是,在将数据添加到数据库之前,查找那些被禁止的/符号,并将其替换为允许使用的符号,比如说-(减号)。

String deviceName = response.body().get(finalI).getDeviceName().replaceAll("/", "-");

然后,您只需像这样在参考中使用:
firebaseFirestore.collection("Mobiles").document(deviceName);

嗨,沃尔特!你试过我上面的解决方案了吗?它有效吗? - Alex Mamo

0

一个可能性是

确保你的文档名称不为空,在我的情况下它是空的,然后我也遇到了同样的错误:

例如:

firebaseFirestore.collection("CollectionName").document("");

以上代码将会出现错误:
java.lang.IllegalArgumentException: Invalid document reference. 
Document references must have an even number of segments, but users has 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接