在Firestore中为文档ID建模自定义对象的最佳方法是什么?

时间:2018-02-05 11:27:31

标签: firebase google-cloud-firestore

说我有一个'用户'的集合,我很高兴他们的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

1 个答案:

答案 0 :(得分:3)

现在有一个注释-

您可以简单地使用

@DocumentId String uID

https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentId.html