如何从文档 Firebase Firestore 实时更新中获取修改后的字段或数据?

本文介绍了如何从文档 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: 在这里,我得到的是完整文档的修改,效果很好.但是我只想获取我修改过的字段,而不是从文档中获取所有字段.

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=false,那么我只想获取特定的字段.,我不想要其余的所有fields...(OR) 如何识别哪个字段发生了变化.

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 and not only the property that you have changed.

Cloud Firestore 侦听器在文档级别触发.无法仅通过文档中的特定字段触发.因此 Firestore 客户端 SDK 始终返回完整的文档.不幸的是,无法通过客户端 SDK 仅请求文档的一部分,尽管此选项确实存在于服务器端 SDK 的 select() 方法.

Cloud Firestore listeners fire on the document level. There is no way to get triggered with just particular fields in a document. So the Firestore client-side SDKs always returns complete documents. Unfortunately, there is no way to request only a part of the document with the client-side SDK, although this option does exist in the server-side SDK's select() method.

如果您只想获得特定字段的通知,请考虑添加一个额外的集合,其中包含仅包含这些字段的文档.因此,创建额外的集合,其中每个文档只包含您需要的数据.这还有一个好处,因为还可以让您更轻松地安全访问不同类型的数据.为此,请参阅吉尔·吉尔伯特 (Gil Gilbert) 的回答:

If you want to get notified only of specific fields, consider adding an extra collection with documents that only contain those fields. So create that additional collection where each document just contains the data you need. This has also a benefit because will also allow you to more easily secure access to the different types of data. For that please see Gil Gilbert's answer from:

Todd Kerpelman 的回答来自:

And Todd Kerpelman's answer from:

这种数据重复在 Firestore 等 NoSQL 解决方案中很常见,为此,我建议您观看此视频 Firebase 数据库的非规范化是正常的,以便更好地理解.适用于 Firebase 实时数据库,但原理与 Cloud Firestore 相同.

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 实时更新中获取修改后的字段或数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,WP2

admin_action_{$_REQUEST[‘action’]}

do_action( "admin_action_{$_REQUEST[‘action’]}" )动作钩子::在发送“Action”请求变量时激发。Action Hook: Fires when an ‘action’ request variable is sent.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$_REQUEST['action']引用从GET或POST请求派生的操作。源码(Source)更新版本源码位置使用被使用2.6.0 wp-admin/admin.php:...

日期:2020-09-02 17:44:16 浏览:1127

admin_footer-{$GLOBALS[‘hook_suffix’]}

do_action( "admin_footer-{$GLOBALS[‘hook_suffix’]}", string $hook_suffix )操作挂钩:在默认页脚脚本之后打印脚本或数据。Action Hook: Print scripts or data after the default footer scripts.目录锚点:#说明#参数#源码说明(Description)钩子名的动态部分,$GLOBALS['hook_suffix']引用当前页的全局钩子后缀。参数(Parameters)参数类...

日期:2020-09-02 17:44:20 浏览:1032

customize_save_{$this->id_data[‘base’]}

do_action( "customize_save_{$this-&gt;id_data[‘base’]}", WP_Customize_Setting $this )动作钩子::在调用WP_Customize_Setting::save()方法时激发。Action Hook: Fires when the WP_Customize_Setting::save() method is called.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_data...

日期:2020-08-15 15:47:24 浏览:775

customize_value_{$this->id_data[‘base’]}

apply_filters( "customize_value_{$this-&gt;id_data[‘base’]}", mixed $default )过滤器::过滤未作为主题模式或选项处理的自定义设置值。Filter Hook: Filter a Customize setting value not handled as a theme_mod or option.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_date['base'],指的是设置...

日期:2020-08-15 15:47:24 浏览:866

get_comment_author_url

过滤钩子:过滤评论作者的URL。Filter Hook: Filters the comment author’s URL.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/comment-template.php:32610...

日期:2020-08-10 23:06:14 浏览:903

network_admin_edit_{$_GET[‘action’]}

do_action( "network_admin_edit_{$_GET[‘action’]}" )操作挂钩:启动请求的处理程序操作。Action Hook: Fires the requested handler action.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$u GET['action']引用请求的操作的名称。源码(Source)更新版本源码位置使用被使用3.1.0 wp-admin/network/edit.php:3600...

日期:2020-08-02 09:56:09 浏览:848

network_sites_updated_message_{$_GET[‘updated’]}

apply_filters( "network_sites_updated_message_{$_GET[‘updated’]}", string $msg )筛选器挂钩:在网络管理中筛选特定的非默认站点更新消息。Filter Hook: Filters a specific, non-default site-updated message in the Network admin.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分$_GET['updated']引用了非默认的...

日期:2020-08-02 09:56:03 浏览:834

pre_wp_is_site_initialized

过滤器::过滤在访问数据库之前是否初始化站点的检查。Filter Hook: Filters the check for whether a site is initialized before the database is accessed.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/ms-site.php:93910...

日期:2020-07-29 10:15:38 浏览:809

WordPress 的SEO 教学:如何在网站中加入关键字(Meta Keywords)与Meta 描述(Meta Description)?

你想在WordPress 中添加关键字和meta 描述吗?关键字和meta 描述使你能够提高网站的SEO。在本文中,我们将向你展示如何在WordPress 中正确添加关键字和meta 描述。为什么要在WordPress 中添加关键字和Meta 描述?关键字和说明让搜寻引擎更了解您的帖子和页面的内容。关键词是人们寻找您发布的内容时,可能会搜索的重要词语或片语。而Meta Description则是对你的页面和文章的简要描述。如果你想要了解更多关于中继标签的资讯,可以参考Google的说明。Meta 关键字和描...

日期:2020-10-03 21:18:25 浏览:1620

谷歌的SEO是什么

SEO (Search Engine Optimization)中文是搜寻引擎最佳化,意思近于「关键字自然排序」、「网站排名优化」。简言之,SEO是以搜索引擎(如Google、Bing)为曝光媒体的行销手法。例如搜寻「wordpress教学」,会看到本站的「WordPress教学:12个课程…」排行Google第一:关键字:wordpress教学、wordpress课程…若搜寻「网站架设」,则会看到另一个网页排名第1:关键字:网站架设、架站…以上两个网页,每月从搜寻引擎导入自然流量,达2万4千:每月「有机搜...

日期:2020-10-30 17:23:57 浏览:1264