Java Firestore - Error: Use FieldPath.of() for field names containing '˜*/[]'

Java Firestore - Error: Use FieldPath.of() for field names containing '˜*/[]'

我正在编写 Java 代码来与 Firestore 数据库交互。我需要访问字段名称中包含正斜杠的字段:

f.col1 = document.getString("username");
f.col2 = document.getString("subject");
f.col3 = document.getString("details/comments");

当我 运行 代码时,我在获取 Col3 的行中收到以下错误:

java.lang.IllegalArgumentException: Use FieldPath.of() for field names containing '˜*/[]'.

我不知道如何正确使用此方法,也找不到任何关于如何正确使用它的文档(谷歌搜索提供了等效的 JS 方法)。当我尝试使用 FieldPath.of() 方法时,如下所示:

f.col3 = document.getString(FieldPath.of("details/comments"));

我收到以下编译器错误:

java: incompatible types: com.google.cloud.firestore.FieldPath cannot be converted to java.lang.String

我无法控制 Firebase 数据的结构,所以我需要使用这个字段名称。

我正在使用以下文档与数据库进行交互: https://firebase.google.com/docs/firestore/quickstart#java_9

我认为您正在为最后一个字段寻找 FieldPath.of

f.col3 = document.getString(FieldPath.of("details/comments"));

如果 / 表示 commentsdetails 映射中的一个子字段,正确的分隔符应该是 . btw:

f.col3 = document.getString(FieldPath.of("details.comments"));

对于你的第二个错误,看起来 DocumentSnapshot.getString() 只存在一个 String 参数,所以你需要使用接受 FieldPathget()

f.col3 = document.get(FieldPath.of("details/comments"));

f.col3 = document.get(FieldPath.of("details.comments"));

如果您在此处遇到字符串转换错误,请将 toString() 添加到调用中。