说我有一个'用户'的集合,我很高兴他们的ID成为生成的Firestore documentId,如:
Users Collection
GENERATED_FIRESTORE_ID1:
name: "User 1 name"
...: etc.
GENERATED_FIRESTORE_ID2:
name: "User 2 name"
...: etc."
我正在添加它们,并使用自定义对象检索它们(我现在使用的是Android,但我想这个问题更为通用)。我不想要额外的" id"文档中的字段,只需使用document.getId()
方法获取生成的firestore ID。
是否有正确的方法将POJO映射到没有单独的ID字段,但在查询时将其设置为应用程序使用情况?我使用@Exclude注释进行如下操作:
public class User {
// as a side question, do I need @exclude on the field or just the getter?
@Exclude
String uId;
String name;
String email;
//... additional fields as normal
public User() {
}
@Exclude
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.displayName = name;
}
//... etc. etc.
}
然后我创建User对象并按如下方式设置其ID:
for (DocumentSnapshot doc : documentSnapshots) {
User user = doc.toObject(User.class);
user.setId(doc.getId());
users.add(user );
}
这样做很好,如果这确实是道路上的道歉,但我是FireStore的新手(我喜欢它),并且想确保我做得对。我只是想知道是否有一种方法可以自动完成,没有@Exclude,然后在doc.toObject(MyCustomObject.class)
之后手动设置ID
答案 0 :(得分:3)
现在有一个注释-
您可以简单地使用
@DocumentId
String uID
https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentId.html