为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 firestore 数据库中获取文档 ID

如何从 firestore 数据库中获取文档 ID

慕容3067478 2023-03-31 09:27:18
我正在尝试通过调用检索文档 ID doc.getId(),但无法从此代码调用它        db.collection("Pegawai").addSnapshotListener(new EventListener<QuerySnapshot>() {            @Override            public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {                if(e != null) {                    Log.d(TAG, e.toString());                }                if (queryDocumentSnapshots != null) {                    for (DocumentChange doc: queryDocumentSnapshots.getDocumentChanges()) {                        if (doc.getType() == DocumentChange.Type.ADDED) {                            Pegawai pegawai = doc.getDocument().toObject(Pegawai.class);                            pegawai.setId(doc.getId());                            pegawaiList.add(pegawai);                            pegawaiListAdapter.notifyDataSetChanged();                        }                    }                }            }        });我试过这段代码,显然,我可以用这段代码调用,但这段代码根本doc.getId()没有填充我的代码recyclerview        db.collection("Pegawai").addSnapshotListener(new EventListener<QuerySnapshot>() {            @Override            public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {                if(e != null) {                    Log.d(TAG, e.toString());                }                if (queryDocumentSnapshots != null) {                    for (DocumentSnapshot doc : queryDocumentSnapshots) {                        Pegawai pegawai = doc.toObject(Pegawai.class);                        pegawai.setId(doc.getId());                        pegawaiList.add(pegawai);                    }                }            }        });
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

如果您将 FirestoreRecyclerAdapter 与 Recyclerview 一起使用,请执行此操作。

 DocumentSnapshot snapshot = options.getSnapshots().getSnapshot(position); 
            String dbKey = snapshot.getId();
            Log.d(TAG, "The database Key is : "+ dbKey);

然后你可以像这样将它绑定在视图持有者上

    holder.setDocumentId(dbKey);

然后你可以在任何地方检索它,这取决于你的 getters 和 setters。我希望这会帮助那里的人。


查看完整回答
反对 回复 2023-03-31
?
侃侃无极

TA贡献2051条经验 获得超10个赞

DocumentChange对象具有返回QueryDocumentSnapshot对象的方法getDocument()。这是DocumentSnapshot的子类,这意味着它还有一个getId()方法。因此,您应该能够使用来获取正在处理的文档的 ID。doc.getDocument().getId()



查看完整回答
反对 回复 2023-03-31
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

以下是如何在 Javascript 中解决它,也许这将帮助您将其转换为 Java。使用以下方法,我们可以动态检索文档 ID。请注意,我们使用snapshotChanges(). 这很重要,因为一旦我们订阅了这个函数,订阅中就会包含文档 ID。


saveMyValuesHere: any[] = []


getPegawai() {


    return this.db.collection('Pegawai').snapshotChanges();


  }


 getPegawai().subscribe(serverItems => {

      this.saveMyValuesHere = [];

      serverItems.forEach(a => {

        const data = a.payload.doc.data();

        const id = a.payload.doc.id;

        this.saveMyValuesHere.push({ id, ...data});

      });

    });


查看完整回答
反对 回复 2023-03-31
  • 3 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信