android 在Firebase中生成唯一ID的建议做法是什么?

5jvtdoz2  于 2023-02-17  发布在  Android
关注(0)|答案(3)|浏览(153)

在SQL Server中,每当我们想要生成唯一ID时,我们都有NEW_ID()函数。有时,当难以分配主键时,我使用该函数来唯一标识行。
我现在正在写一个Kotlinandroid应用程序,我需要在一个集合-〉文档中存储用户信息。为每个用户生成唯一ID的推荐做法是什么?我应该使用从1开始的简单递增值吗?

mm9b1k5b

mm9b1k5b1#

Firestore没有为文档实现自动递增ID。自己实现它会导致性能损失--这根本不能满足Firestore的要求。
如果您要向集合添加新文档,并且它们还没有自然ID,那么当您在CollectionReference上使用add()方法时,SDK会为您生成一个随机ID。这是添加新文档的首选方法,文档中会介绍这一方法。
如果需要对这些文档进行排序,则应添加可用于对查询进行排序的字段。如果需要基于时间的排序,则应添加包含当前时间的时间戳字段。

mwyxok5s

mwyxok5s2#

如果你要验证用户,我建议你使用firebase自己生成的UID,你可以引用this来获取当前用户的UID
否则,您可以生成唯一ID,就像我们在使用实时数据库时使用push()一样。

DocumentReference key;
key = db.collection("YOUR_COLLECTION_NAME").document();
UniqueID = key.getId();

现在,您可以将此UniqueID用作文档。

aamkag61

aamkag613#

如果你在这里寻找一个Angular 的建议,你可以这样做:
service.ts

YourListRef: AngularFirestoreCollection<YourModel>;
private dbPath = '/yourRootCollection';

...
  constructor(private db: AngularFirestore) {
    this.YourListRef= this.db.collection(this.dbPath)
      .doc('yourFbDocRef').collection('youFbCollection');
  }
...
  create(obj: YourModel): any {
    this.uidKey = this.db.createId(); //<-- creating UID

    if (this.uidKey != null && this.uidKey != '') {
      obj.id = this.uidKey //<-- using like object's id
      return this.YourListRef.doc(this.uidKey).set({ ...obj });
    }
  }

相关问题