Action Cables、嵌套 JSON 属性和 JSONAPI

2024-04-29

我有一个相当具体的问题,我希望你们中的一个真正聪明的人可能知道解决方案(甚至是现阶段的解决方法)

具体来说,我正在处理操作电缆、嵌套 JSON 和 JSONAPI.

我有一个asset模型,它具有一些属性,例如name, desc等等,但它还有一个属性称为state这是一个复杂的嵌套 JSON 对象。

// app/models/asset.js
export default DS.Model.extend({
    // Attributes
    name: DS.attr('string'),
    desc: DS.attr('string'),
    state: DS.attr(),
    lastSeen: DS.attr('date'),
});

当资产上的任何内容在后端发生变化时,它会被通过电缆推送到 Ember,在那里它会执行pushPayload(data),有效负载如下所示;

{
    "data": {
        "id": "5",
        "type": "assets",
        "attributes": {
            "asset_id": "962ABC",
            "name": "962 ABC",
            "desc": "Test Vehicle",
            "activation_status": "active",
            "state": {
                "avl": {
                    "longitude": 152.9475426,
                    "reported_at": "2017-06-22T21:59:52Z"
                },
                "dfm": {
                    "in_alarm": false,
                    "reported_at": "2017-06-21T05:46:57Z",
                    "sensitivity": "normal",
                    "voice_prompt": false,
                    "driver_detected": true,
                },
                "tpms": {
                    "system_desc": "123ABC",
                    "system_type": "123_abc"
                }
            },
            "last_seen": "2017-06-22T21:59:54.000Z"
        },
        "relationships": {
            "company": {
                "data": {
                    "id": "1",
                    "type": "companies"
                }
            },
            "events": {
                "links": {
                    "related": "/events/?asset_id=5"
                }
            },
            "messages": {
                "links": {
                    "related": "/messages/?asset_id=5"
                }
            }
        }
    }
}

这一切都工作得很好,而且由于电缆的原因,资产和状态的更新会在发生时显示,并且state是只读的,所以我不必担心保存任何东西。但是,我注意到,当任何单个属性state后端发生变化,整个资产从后端下推(这应该没问题),然后这会触发观察者state以及所有观察员state后代 - 虽然我需要它只针对发生变化的状态属性触发观察者.

我尝试了很多事情,但每一种似乎要么根本不起作用,要么仍然以一种解雇所有状态观察员的方式继续更新状态。

我尝试过什么;

  1. ember-model-data-fragments (虽然它应该可以工作,但我认为操作电缆推送数据的方式必须颠覆这个?)
  2. 嵌入记录(需要状态 ID,目前与 JSONAPI 不兼容)
  3. 原始 json 转换(将 json 转换为 ember 对象,似乎没有帮助)

有人可以建议我尝试的策略或解决方案吗?我在这个问题上花了近两天的时间..我什至愿意将其分开avl/tpms/dfm,只要其中一个部分中的属性发生更改,它就不会通知其他 2 个部分中的属性。

Thanks


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Action Cables、嵌套 JSON 属性和 JSONAPI 的相关文章

随机推荐

  • 将 numpy memmap 刷新到 npy 文件

    有没有一种方法可以将 numpy memmap 数组保存到 npy文件 显然 有一种方法可以从 a 加载这样的数组 npy文件如下 data numpy load input npy mmap mode r 但刷新文件并不等同于将其存储在
  • Visual Studio Community 2015 安装失败

    最近安装了VS 2015 windows 10 但是出现了一些包失败的情况 稍后详述 当尝试启动新项目时 我收到一条错误消息 无法创建编译器 所以我卸载并修复了微软可再发行组件并再次尝试 从那以后我根本无法安装VS 我收到以下消息 Rosl
  • 如何用CGAL获取多边形网格的顶点和面?

    With CGAL 我能够得到一个多面体网格OFF格式 例如 下面的程序构建两个四面体 计算它们的交集 并将结果返回到OFF文件 这OFF输出提供顶点坐标和顶点索引给出的面 但我想将顶点和面作为 C 变量 例如double顶点向量和int面
  • 当我们点击编辑器外部时如何隐藏ckeditor?

    这是我的代码 div div
  • Firebase 3 - 附加身份验证范围数据

    在 Firebase 3 文档中 他们说您可以获取其他范围数据 例如 可选 指定您想要从身份验证提供程序请求的其他 OAuth 2 0 范围 要添加范围 请调用 addScope 例如 provider addScope https www
  • 如何读取 stripe webhook 响应 [重复]

    这个问题在这里已经有答案了 我创建了 Coldfusion 文件来捕获 STRIPE Webhook 响应
  • 如何在 android studio 中监听 shell 命令的响应?

    在 Android 终端模拟器中 我可以输入以下命令 gt su gt echo class power supply battery charge rate 根据手机的充电方式 输出将为 无 正常 或 涡轮 我希望能够检索此输出并存储它作
  • PHP: Datetime::Diff 结果比较

    我试图比较两个日期之间的差异 但结果似乎非常错误 例如以下代码 datetime1 new DateTime 2009 10 11 datetime2 new DateTime 2009 10 13 interval datetime1 g
  • PostgreSQL 中列名包含冒号的问题

    我从 OSM 下载了形状数据 我已将数据从 Shapefile 导入到 PostgreSQL 没有任何问题 但在执行 select 语句时出现错误 Select addr city From location Error syntax er
  • Kubernetes - 向 kube dns 中的匿名用户授予 RBAC 访问权限

    我有一个带有主节点和工作节点的 Kubernetes 集群设置 Kubectl cluster info 显示 kubernetes master 以及 kube dns 成功运行 我正在尝试访问下面的 URL 因为它是我的组织内部的 所以
  • 打开浏览器开发者工具会影响应用程序性能吗?

    我想知道打开浏览器开发人员工具是否真的会以任何方式影响应用程序性能 这不仅仅是考虑在同一窗口中打开开发人员工具 它可以在新窗口或同一窗口中 如果开发人员工具未打开与打开状态相比 应用程序渲染 性能是否有任何差异 打开开发人员工具肯定会影响性
  • 如何在片段之间传递数据

    我试图在程序中的两个片段之间传递数据 它只是存储在列表中的一个简单字符串 列表在片段 A 中公开 当用户单击列表项时 我需要它在片段 B 中显示 内容提供程序似乎只支持 ID 因此这不起作用 有什么建议么 为什么不使用捆绑包呢 从您的第一个
  • 计算嵌套列表的深度或最深级别

    A 在一项作业上遇到了真正的问题 并且令人头疼 我正在上一堂入门编程课 我必须编写一个函数 给定一个列表 该函数将返回它所达到的 最大 深度 例如 1 2 3 将返回 1 1 2 3 将返回 2 我写了这段代码 这是我能得到的最好的T T
  • Mysql正则表达式搜索不包含重复字符

    我有一个数据库表 其中包含字典中的单词 现在我想选择字谜词 例如 如果我给出字符串SEPIAN它应该获取像这样的值apes pain pains pies pines sepia etc 为此 我使用了查询 SELECT FROM word
  • 如何在 compose 中正确加载 svg 图像?

    我试图在 Jetpack compose 中加载 SVG 文件 但当我在手机上运行它时 它变成了黑色 这是我手机上的图像 我不想用tint修改器 因为它将以单一颜色加载 SVG Use Image可组合而不是Icon 图标默认进行着色 So
  • Firefox 中有 XDomainRequest 等效项吗?

    Firefox 或任何其他浏览器中是否有与 Internet Explorer 的 XDomainRequest 等效的功能 我想访问我的域之外的服务 网站 Internet Explorer 8 中的 XDomainRequest 对象是
  • 下拉菜单的 iframe z-index

    我有下拉菜单的代码 我的目标是通过 iFrame 加载该代码 不幸的是 我无法弄清楚如何使用 Z 索引加载 iFrame 外部的视图元素 代码如下
  • 如何在 PHP 中从serializeArray 获取 POST 值?

    我正在尝试这个我见过的新方法serializeArray with ajax var data form input serializeArray post var action process data data ajax etc 这样我
  • 如何在 VS 2012 中获取水晶报表?

    我对 VS 2012 有疑问 即我想创建一个报告 例如特定学生的结果 我搜索了很多然后我知道我必须安装SAP Crystal Report 并且我已经这样做了 但工具箱中仍然没有水晶报表 只有两个项目 名为 报表 报表向导 有人可以帮我弄这
  • Action Cables、嵌套 JSON 属性和 JSONAPI

    我有一个相当具体的问题 我希望你们中的一个真正聪明的人可能知道解决方案 甚至是现阶段的解决方法 具体来说 我正在处理操作电缆 嵌套 JSON 和 JSONAPI 我有一个asset模型 它具有一些属性 例如name desc等等 但它还有一