代码之家  ›  专栏  ›  技术社区  ›  Will Sutton

Java Firestore-错误:使用FieldPath。of()用于包含“*/[]”的字段名

  •  0
  • Will Sutton  · 技术社区  · 3 年前

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

    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

    1 回复  |  直到 3 年前
        1
  •  0
  •   Will Sutton    3 年前

    我想你在找 FieldPath.of 对于最后一个字段:

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

    如果 / 是为了表明 comments details 地图,正确的分隔符应该是 . 顺便说一句:

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

    对于第二个错误,它看起来像 DocumentSnapshot.getString() 只存在于一个 String 参数,所以您要使用 get() 它接受 FieldPath :

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

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

    如果这里出现字符串转换错误,请添加 toString() 听电话。