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

我正在尝试通过调用检索文档 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);

                    }

                }

            }

        });


慕容3067478
浏览 147回答 3
3回答

炎炎设计

如果您将 FirestoreRecyclerAdapter 与 Recyclerview 一起使用,请执行此操作。&nbsp;DocumentSnapshot&nbsp;snapshot&nbsp;=&nbsp;options.getSnapshots().getSnapshot(position);&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;dbKey&nbsp;=&nbsp;snapshot.getId(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.d(TAG,&nbsp;"The&nbsp;database&nbsp;Key&nbsp;is&nbsp;:&nbsp;"+&nbsp;dbKey);然后你可以像这样将它绑定在视图持有者上&nbsp;&nbsp;&nbsp;&nbsp;holder.setDocumentId(dbKey);然后你可以在任何地方检索它,这取决于你的 getters 和 setters。我希望这会帮助那里的人。

侃侃无极

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

慕丝7291255

以下是如何在 Javascript 中解决它,也许这将帮助您将其转换为 Java。使用以下方法,我们可以动态检索文档 ID。请注意,我们使用snapshotChanges(). 这很重要,因为一旦我们订阅了这个函数,订阅中就会包含文档 ID。saveMyValuesHere: any[] = []getPegawai() {&nbsp; &nbsp; return this.db.collection('Pegawai').snapshotChanges();&nbsp; }&nbsp;getPegawai().subscribe(serverItems => {&nbsp; &nbsp; &nbsp; this.saveMyValuesHere = [];&nbsp; &nbsp; &nbsp; serverItems.forEach(a => {&nbsp; &nbsp; &nbsp; &nbsp; const data = a.payload.doc.data();&nbsp; &nbsp; &nbsp; &nbsp; const id = a.payload.doc.id;&nbsp; &nbsp; &nbsp; &nbsp; this.saveMyValuesHere.push({ id, ...data});&nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; });
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java