首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用@ngrx/ data,如何在自定义数据服务上形成从更新到实体的JSON补丁文档?

@ngrx/data 是一个用于管理实体状态和数据访问的库,它基于 Redux 和 Angular。它提供了一种简化数据管理的方式,可以帮助开发人员更轻松地处理数据流和状态管理。

要在自定义数据服务上使用 @ngrx/data 形成从更新到实体的 JSON 补丁文档,可以按照以下步骤进行操作:

  1. 安装 @ngrx/data:使用 npm 或 yarn 安装 @ngrx/data 库。
  2. 创建一个自定义数据服务:创建一个 Angular 服务来处理与实体相关的数据操作,例如获取、创建、更新和删除实体。
  3. 配置实体模型:使用 @ngrx/data 的 EntityMetadataMap 配置实体模型,定义实体的名称、API 路径、实体类等信息。
  4. 创建自定义数据适配器:实现一个自定义数据适配器,用于与后端 API 进行通信,并将其注册到 @ngrx/data 中。
  5. 创建自定义数据服务:创建一个自定义数据服务,继承自 @ngrx/data 的 DefaultDataService,并实现必要的方法,例如 update()
  6. 在自定义数据服务中生成 JSON 补丁文档:在自定义数据服务的 update() 方法中,使用 createUpdate() 方法生成 JSON 补丁文档。createUpdate() 方法接受两个参数:实体的 ID 和包含要更新的属性的对象。它将返回一个包含 JSON 补丁文档的 Observable。

以下是一个示例代码:

代码语言:txt
复制
import { Injectable } from '@angular/core';
import { DefaultDataService, EntityCollectionDataService, HttpUrlGenerator } from '@ngrx/data';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { createUpdate } from '@ngrx/data';

@Injectable()
export class CustomDataService extends DefaultDataService<any> implements EntityCollectionDataService<any> {
  constructor(http: HttpClient, httpUrlGenerator: HttpUrlGenerator) {
    super('CustomEntity', http, httpUrlGenerator);
  }

  update(entity: any): Observable<any> {
    const update = createUpdate(entity.id, { ...entity });
    // 发送更新请求,并返回 Observable
    return this.execute('PUT', this.entityUrl(entity), update);
  }
}

在上面的示例中,createUpdate() 方法用于生成 JSON 补丁文档,然后在 update() 方法中使用该文档进行更新操作。

请注意,上述示例中的代码仅用于演示目的,实际应用中需要根据具体情况进行适当的修改和调整。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云对象存储(COS)、腾讯云数据库(TencentDB)等。你可以通过访问腾讯云官方网站获取更多关于这些产品的详细信息和文档链接。

注意:本回答仅提供了一种实现方式,实际情况可能因具体需求和技术栈而异,建议在实际开发中根据具体情况进行调整和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NoSQL为什么需要模式自由ETL工具?

他们可能会有十个步骤来加载数据,设置一些临时变量(JSON集合名称,也许是在目标JSON结构中一些常量或计算字段),然后将数据加载到特定集合中。...然后,将这些元数据存储起来,以便通过元数据注入来驱动ETL过程 在NoSQL世界里,变得相关各种来源加载大量数据,并通过数据科学,而不是通过人工配置来确定数据实体何在系统间相互链接。...使用这种方法,结合元数据注入将允许Pentaho转换加载多个数据源,并向集成开发人员提供组织数据中存在实体以及这些实体之间关系建议。...工作人员在现有的演示销售数据信息运行了这个功能,并惊奇地发现语义图在发现之后是多么有用。所有主要实体都在语义图上出现在屏幕,显示出已发现关系和数据类型,以及关联强度。...一旦想到如何做到这一点,花费五分钟时间来开发转换,使用PDI将客户数据加载到NoSQL中,另外五分钟用于数据服务转换,再用五分钟用于配置仪表板。所以,加载数据到洞察分析只有15分钟。这很简单。

1.8K100

升级到 MySQL 8.0,付出了惨痛代价!

1、代码补丁 首先我们建立了 8.0 分支,用于在开发环境中进行构建和测试。然后,我们开始 5.6 分支移植补丁漫长过程。开始时候有 1700 多个补丁,但我们能将其组织成几个主要类别。...有些补丁非常晦涩难懂,需要做调查工作 — 挖掘旧设计文档、邮件或代码评审注释,以了解它们历史。 我们将每个补丁分入四类之一: Drop:不再使用,或在8.0中具有同等功能特性,不需要移植。...对于每个应用程序工作负载,我们在 8.0 创建了测试实例,并向它们回放影子流量查询。我们捕获并记录了 8.0 服务器返回错误,并发现了一些有趣问题。...我们自定义 5.6 文档存储和 JSON 函数与 8.0 不兼容。使用文档存储应用程序需要将文档类型转换为文本以进行迁移。...我们一直在考虑如何在 MyRocks 支持像即时DDL这样存储引擎特性。总的来说,新版本大大扩展了 MySQL@Facebook 功能。

1.5K20
  • 升级到 MySQL 8.0,Facebook 付出代价。。

    1、代码补丁 首先我们建立了 8.0 分支,用于在开发环境中进行构建和测试。然后,我们开始 5.6 分支移植补丁漫长过程。开始时候有 1700 多个补丁,但我们能将其组织成几个主要类别。...有些补丁非常晦涩难懂,需要做调查工作 — 挖掘旧设计文档、邮件或代码评审注释,以了解它们历史。 我们将每个补丁分入四类之一: Drop:不再使用,或在8.0中具有同等功能特性,不需要移植。...由于我们需要筛选大量补丁,将不可避免地出现移植状态差异,这些注释帮助我们解决了此类问题。 客户端和服务器类别中每个补丁都自然而然地成为一个软件发布里程碑。...我们自定义 5.6 文档存储和 JSON 函数与 8.0 不兼容。使用文档存储应用程序需要将文档类型转换为文本以进行迁移。...我们一直在考虑如何在 MyRocks 支持像即时DDL这样存储引擎特性。总的来说,新版本大大扩展了 MySQL@Facebook 功能。

    73530

    Spring认证中国教育管理中心-Spring Data REST框架教程二

    支持媒体类型 该PATCH方法支持以下媒体类型: 应用程序/hal+json 应用程序/json 应用程序/补丁+json 应用程序/合并补丁+json DELETE 该DELETE方法删除暴露资源...4.4.协会资源 Spring Data REST 为每个项目资源具有的每个关联公开每个项目资源子资源。资源名称和路径默认为关联属性名称,可以在关联属性使用自定义@RestResource。...要熟悉这些功能,请参阅您使用存储库实现(例如 Spring Data JPA) Spring Data 文档。...这些额外信息使您可以轻松配置滑块或指示器等 UI 工具,以反映用户在查看数据时整体位置。例如,前面示例中文档显示我们正在查看第一页(页码 0 开始)。...事实,用户可以页面大小列表中进行选择,动态更改所提供内容,而无需next在顶部或底部重写和`prev 控件。

    1.8K10

    写在 2021: 值得关注学习前端框架和工具库

    优点是有非常多插件(plugin)和模板(starter),并且支持很多CMS(Contentful、Neltify等),适合喜欢在线写文档。...,?地方在于提供了很geek可视化界面,如我服务器截图: ? Prisma,下一代ORM,不仅仅是ORM。...GraphQL-Code-Generator[48],很强大工具,.graphql文件到语言可以直接使用方法/类型定义,这个思想实际各个语言都有,Dart和Ruby等。...Hasura还提供了前面说GraphQURL作为client,hasura-code-gen来Hasura服务生成TS代码,所以基本可以用Hasura生态做为一套方案了,包括我也有看到过一些创业公司就在使用...JSON-Server[101],写demo神器,JSON文件快速得到一个REST API,和Husky、LowDB同一个作者。

    4.2K10

    一个Angular 5教程:一步一步指导实现你第一个Angular 5应用程序

    对我而言,最好使用智能编辑器vim,因为它会为代码中任何错误提供额外补充,因为TypeScript是强类型。...我们可以在文档中阅读更多有关它们内容。...实际,Angular为我们提供了一些糖语,我们可以在这里使用它,所以我另一个角度开始解释糖工作原理。...使用模板驱动表单与以前使用简单HTML表单完全相同。如果我们需要复杂东西,那么在Angular中有一种不同形式:反应式。我们将介绍转换表单后他们反应。...我们用它来开发丰富接口客户端应用程序,单页应用程序和移动应用程序。Angular主要优势在于获得一个完全集成Web框架,该框架为构建组件,路由和使用远程API提供了自己框内解决方案。

    42.6K10

    写在2021: 值得关注学习前端框架和工具库

    优点是有非常多插件(plugin)和模板(starter),并且支持很多CMS(Contentful、Neltify等),适合喜欢在线写文档。...很新颖使用方式(我是真的第一次见),TS支持非常好,Schema定义方式也比传统ORM各个实体定义分开方式清晰很多,有兴趣可以瞅瞅我写这个demo:Prisma-Article-Example...GraphQL-Code-Generator,很强大工具,.graphql文件到语言可以直接使用方法/类型定义,这个思想实际各个语言都有,Dart和Ruby等。...LowDB,demo中常用JSON数据库,亮点在使用LodashAPI来操作数据库。...JSON-Server,写demo神器,JSON文件快速得到一个REST API,和Husky、LowDB同一个作者。

    2.9K10

    Spring认证中国教育管理中心-Spring Data Couchbase教程二

    编程模型角度来看,有几点需要考虑: 应该保留哪个属性(默认为所有声明属性)?您可以通过使用 注释这些属性来排除属性@Transient。 如何在数据存储中表示属性?...编程模型角度来看,有几点需要考虑: 应该保留哪个属性(默认为所有声明属性)?您可以通过使用 注释这些属性来排除属性@Transient。 如何在数据存储中表示属性?...2.2.文档和字段 所有实体都应使用注释进行@Document注释,但这不是必需。 此外,实体每个字段都应使用注释进行@Field注释。...该属性必须可解析为 int 值,并且不能混合使用这两种方法。 如果您想要文档字段名称与实体使用字段名称不同表示形式,您可以在@Field注释设置不同名称。...所有这些在文档中默认表示为一个 unix 时间戳(数字)。您始终可以使用自定义转换器覆盖默认行为,如下所示。这是一个例子: 示例 11.

    1.8K50

    Facebook将MySQL升级至8.0

    Facebook希望在 MySQL 社区中保持活跃,尤其是他们在 MyRocks 存储引擎工作。8.0 中增强功能,即时 DDL,可以加速 MyRocks 架构更改。...代码补丁 Facebook首先设置了 8.0 分支,用于在他们开发环境中进行构建和测试。然后,他们开始了 5.6 分支移植补丁漫长旅程。...但一些补丁非常模糊,需要挖掘旧设计文档、帖子或代码审查评论以了解它们历史。 Facebook用4个类别区分每个补丁类型: 删除:不再使用功能或在 8.0 中具有等效功能,不需要移植。...Facebook自定义 5.6 文档存储和 JSON 函数与 8.0 不兼容。使用文档存储应用程序需要将文档类型转换为文本以进行迁移。...现在Facebook大部分自定义功能都已移植到 8.0,更新到 Oracle 次要版本相对容易,但我们计划跟上最新版本步伐。

    99130

    Facebook 分享 MySQL 5.6 到 8.0 迁移经验

    而 MySQL 8.0 则刚好是在 MyRocks 完成时发布,所以 Facebook 选择升级以改进其存储引擎。 Facebook 指出,迁移到 8.0 明显比迁移到 5.6 要困难。...因为 5.6 到 8.0 升级完全跳过了 5.7,一些在 5.6 中活跃 API 要么被弃用、要么被完全删除;这也就意味着任何使用旧 API 应用程序都需要更新。...且 Facebook 一些功能也与 8.0 中类似功能不向前兼容,需要弃用和向前迁移。 还有自定义代码文档参差不齐问题。Facebook 称,它大多数自定义代码都有良好注释和文档。...但其他代码没有很好文档,Facebook 需要挖掘旧文件、帖子和代码注释来了解历史。 最终,Facebook 方面评估了 2300 多个补丁并将其中 1500 个移植到了 MySQL 8.0。...现在我们大部分自定义功能都已移植到 8.0,更新到 Oracle 次要版本相对容易,我们计划跟上最新版本步伐。” “尽管我们在迁移道路上遇到了种种障碍,但我们已经看到了运行8.0好处。

    72220

    都9102年了,还需要用到 jQuery 吗?

    jQuery 确保无论用户使用哪种浏览器都能正确呈现网页。 大量文档 - jQuery文档,资源及其生态系统可以帮助开发人员从新手很快升级到专家。...实现双向数据 状态管理 可以使用专门库来实现 Context API,Redux 第三方库,NGRX,NGXS等 Vuex 模板 JavaScript JavaScript(JSX) TypeScript...如果你项目需要大量动画,jQuery 可能是一个合适选项,因为有大量可自定义插件能够帮助补充易于使用 .animate 方法。 为多个浏览器构建。...如何在2019年使用jQuery 要在项目中使用jQuery,有几种方法可以入门。 在撰写本文时最新版本是 3.4.1 压缩生产版本或未压缩开发版本。...jQuery 迁移到更新库和框架转变,但是它仍然非常活跃并且被积极使用,因为它与原生方法相比容易实现你所要功能。

    2.2K40

    Swift 定制 Core Data 迁移

    什么是 Core Data 迁移?Core Data 迁移是将数据模型从一个版本更新到另一个版本过程,因为数据形状发生了变化(例如,添加或删除新属性)。...在大多数情况下,Core Data 将自动处理迁移过程。但是,有些情况下,你需要通过提供一个映射模型来自定义迁移过程,告诉 Core Data 究竟如何源模型迁移到目标模型中每个属性和实体。...自动迁移存储,因为我们不想做渐进式迁移,这种迁移速度慢得多且复杂,并且我们还告诉 Core Data 不要自动推断映射模型,这意味着我们将不得不为每个迁移提供一个映射模型文件,并且可以允许我们自定义这个过程...持久化了一首歌曲后,使用 Core Data Lab 检查数据库,我们可以看到属性被相应保存:更新模型当前版本模型存在一些可扩展性问题:模型仅允许每个曲目有一个艺术家,而实际,一个曲目可以有多个艺术家...最后,让我们将此自定义策略添加到映射模型中:现在,如果我们再次运行应用程序并使用 Core Data Lab 检查数据库,我们可以看到一个新实体已经填充了正确数据。

    7600

    安息吧 REST API,GraphQL 长存

    然后 GraphQL 层将与两个不同数据服务进行通信。GraphQL 首先将客户端需要与多种语言进行通信中隔离,并将单个请求转换为使用不同语言多个服务多个请求。...这就是为什么我们需要在 GraphQL 运行时中定义一个模式,并且该模式能被客户端所使用。 这个模式基本是一个功能文档,其中列出了客户端可以请求 GraphQL 层所有查询。...这些类型可以是原语或者自定义,并且模式中所有其他类型都需要类型。这种丰富类型系统带来丰富功能,拥有内省 API,并能够为客户端和服务器构建强大工具。...本质,GraphQL 将自定义端点思想运用到极致,即让整个服务器成为一个可以回复所有数据请求自定义端点。 与单一端点概念相关另一大概念是使用自定义单个端点所需富客户端请求语言。...如果我们有一个 GraphQL 查询,我们明确知道如何在 UI 中使用响应,因为查询与响应具有相同“结构”。我们不需要检查响应才知道如何使用它,我们也不需要有关 API 任何文档

    2.7K30

    DataHub元数据治理平台架构

    DataHub 采用模型优先理念,重点是解锁不同工具和系统之间互操作性。 下图描述了DataHub高层架构。 要详细地了解构成该架构组件,请查看组件。...然而,它还支持联合元数据服务,这些服务可以由不同团队拥有和运营——事实,这就是 LinkedIn 在内部运行 DataHub 方式。...它们是使用PDL定义,PDL 是一种建模语言,其形式与 Protobuf 非常相似,但序列化为 JSON实体代表特定类别的元数据资产,例如数据集、仪表板、数据管道等。...4.1.DataHub 服务层组件 4.1.1.元数据存储 DataHub 元数据服务将元数据保存在文档存储(RDBMS, MySQL、Postgres 或 Cassandra 等)中。...4.1.4.元数据查询服务 对元数据基于主键读取(例如,基于 获取数据集模式元数据dataset-urn)将被路由到文档存储。

    1.5K10

    东南亚“美团” Grab 搜索索引优化之法

    多个 MySQL 表被连接起来,形成一个 Elasticsearch 索引。以下代码段展示了 MySQL 和 Elasticsearch 中实体 - 关系映射。实体 A 与实体 B 有一对多关系。...繁重数据库负载:消费器 Kafka 流中读取数据,将流事件视为通知,然后使用 ID 数据库中加载数据,创建新 Elasticsearch 文档。流事件中数据并没有得到很好利用。...使用 MySQL CLT 或其他数据库管理工具进行更改可以被捕获。 对 MySQL 表定义没有依赖性。所有的数据都是 JSON 字符串格式。...红色流所示,没有为每个事件创建一个新 Elasticsearch 文档,而是首先检查该文档是否存在。...加入文档存在(大部分时间都存在),则在此事件中更改数据,只要 PayloadBefore 和 PayloadAfter 之间比较就会更新到现有的 Elasticsearch 文档

    98810
    领券