我想了解当我们从自定义 Java 对象设置时,Firestore 如何为文档中的每个值命名键。直觉上以为一定是Java类中的字段名,其实不然。
相反,它似乎来自 getter 方法名称。对吗?
String title = editTextTitle.getText().toString();
String description = editTextDescription.getText().toString();
Note note = new Note(title, description);
noteRef.set(note)
最佳答案
Firestore 遵循 Java Bean 属性命名约定来映射 Java 对象和文档中的字段。
注意:这与 Firebase 实时数据库使用的逻辑相同。虽然您不使用它,但了解这一点可能会更容易找到类似的示例。
以下是特定方法名称如何映射到属性名称(以及此字段名称)的一些示例:
public String getName(); // getter for property "name"
public void setName(String name); // setter for property "name"
public String getUserName(); // getter for property "userName"
public void setUserName(String name); // setter for property "userName"
public bool isAdmin(); // getter for property "admin"
public bool setAdmin(bool admin); // setter for property "admin"
不强制使用 getter 和 setter。在所有这些情况下,您也可以不使用 getter/setter 而使用仅一个公共(public)字段:
public String name;
public String userName;
public bool admin;
最后:也不需要同时拥有 getter 和 setter。如果你只有一个getter,Firebase会直接设置相应的字段。但是,这确实要求您的字段名称遵循命名约定,以便 Firebase 可以找到要设置的正确字段。
关于android - Firestore 如何命名从 POJO 设置的文档中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49751481/