如何从文档Firebase Firestore实时更新中获取修改后的字段或数据? [英] How to get the modified field or data from the doc Firebase Firestore realtime updates?

查看:105
本文介绍了如何从文档Firebase Firestore实时更新中获取修改后的字段或数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有多个文件。我的问题是我无法获得修改的特定数据,我正在获得完整的文档。

I have multiple document. My problem is that I am not able to get the particular data which modified, I am getting full documentions.

 db.collection("employees").whereEqualTo("OID", OID)
                    .addSnapshotListener(new EventListener<QuerySnapshot>() {
                        @Override
                        public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {

                if (e != null) {
                    Log.w(TAG, "listen:error", e);
                    return;
                }

                for (DocumentChange dc : snapshots.getDocumentChanges()) {
                    switch (dc.getType()) {
                        case ADDED:
                             //Here i am getting full newly added documents
                            break;
                        case MODIFIED:
                           //here i am getting which is modified document,ok fine...,But i want to get only the filed which i modified instance of getting full documents..
                            break;
                        case REMOVED:

                            break;
                    }
                }

            }
        });

注意:

案例修改:在这里我得到的是修改了完整文档,哪个工作正常。但我想只获取我修改的字段,而不是从文档中获取所有字段。

case MODIFIED: here i am getting which is modified of full document, which works fine. But I want to get only the field that I modified instead of getting all the fields from documents.

看一下上面的截图

例如

如果我将字段 isActive = true 更改为 isActive = fals e,那么我只想获取特定字段。我不想要剩下的所有字段...(或者)如何识别哪个字段被更改。

If I change the field isActive=true into isActive=false then I want to get the particular filed only.,, I don't want the remaining all fields...(OR) How to identify which field is changed.

推荐答案


如何识别哪个字段已更改?

How to identify which field is changed?

您无法在Cloud Firestore中实现此目的。新的Cloud Firestore数据库具有与Firebase实时数据库不同的概念,不应混淆。没有字段级权限或对文档的访问权限。这是整个文档,或者什么也没有。

You cannot achieve this in Cloud Firestore. The new Cloud Firestore database has different concepts than Firebase real-time database and should not be confused. There are no field-level permissions or access to a document. It's the entire document, or nothing.

因此,如果你想将字段 isActive = true 更改为 isActive = false ,那么一旦修改了整个文档,您将获得整个文档,而不仅仅是您已更改的属性。

So if you want to change the field isActive=true into isActive=false, then you will get the entire document once it was modified not only the property that you have changed.

Cloud Firestore侦听器在文档级别触发。只有文档中的特定字段才能触发。

Cloud Firestore listeners fire on the document level. There is no way to get triggered with just particular fields in a document.

如果您只想获得特定字段的通知,请考虑添加一个仅包含文档的额外集合包含那些字段。这种数据复制在NoSQL解决方案(例如Firestore)中非常常见,为此,我建议您看到此视频,使用Firebase数据库进行非规范化是正常的,以便更好地理解。它适用于Firebase实时数据库,但与Cloud Firestore相同的原则。

If you want to get notified only of specific fields, consider adding an extra collection with documents that only contain those fields. This sort of data duplication is quite common in NoSQL solutions such as Firestore and for that, I recommend you see this video, Denormalization is normal with the Firebase Database for a better understanding. It is for Firebase real-time database but same principles aplly to Cloud Firestore.

这篇关于如何从文档Firebase Firestore实时更新中获取修改后的字段或数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆