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

Vin*_*man 5 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."
Run Code Online (Sandbox Code Playgroud)

我正在添加它们,并使用自定义对象检索它们(我现在使用的是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.
Run Code Online (Sandbox Code Playgroud)

}

然后我创建User对象并设置其ID,如下所示:

 for (DocumentSnapshot doc : documentSnapshots) {
     User user = doc.toObject(User.class);
     user.setId(doc.getId());
     users.add(user );
 }
Run Code Online (Sandbox Code Playgroud)

这样做很好,并且如果确实如此道歉,但我是FireStore的新手(我喜欢它)并且想确保我做得对.我只是想知道是否有一种方法可以自动完成,没有@Exclude,然后手动设置IDdoc.toObject(MyCustomObject.class)

Jef*_*ett 9

现在有一个注释 -

你可以简单地使用

@DocumentId String uID

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