无法获取 hasMany 关联

2023-11-25

我使用了提交eaa1123(余烬)和508479d(ember-data) 构建 JS 文件。

我从 Rails 后端返回了以下 JSON,它是使用以下命令生成的active_model_serializers(0.6.0):

{
  "posts": [
    {
      "id": 408,
      "title": "Lorem Ipsum",
      "body": "In at quo tempora provident nemo.",
      "comments": [
        {
          "id": 956,
          "body": "Quo incidunt eum dolorem."
        },
        ...
      ]
    }
  ]
}

以及以下 Ember 型号:

App.Post = DS.Model.extend({
  title: DS.attr('string'),
  body: DS.attr('string'),
  comments: DS.hasMany('App.Comment', {
    embedded: true
  })
});

App.Comment = DS.Model.extend({
  body: DS.attr('string'),
  post: DS.belongsTo('App.Post')
});

一切看起来都很正常:

post = App.Post.find(408);
post.get('title')
// => "Lorem Ipsum"

但是,我似乎无法看到评论:

comments = post.get('comments')
comments.get('firstObject') instanceof App.Comment
// => true
comments.forEach(function(comment) {
  console.log(comment.get('body'))
})
//=> undefined

当我使用时:

comments.content

我得到一个包含对象的数组,所以:

comments.content[0]
//=> { body: "Quo incidunt eum dolorem.", id: 956 }

但这不是我所期望的。

这看起来很明显,所以我一定做错了什么。 副作用:目前我无法以简单的方式在模板中呈现我的评论,所以我希望有人可以在这方面帮助我。

提前致谢。


如果您使用了该提交,则意味着您使用的是最新的 ember-data 修订版,即 11。嵌入:真实加载嵌入关联在修订版 5 或 9 之间已被弃用,再次不太确定。

如果您使用默认的restAdapter,您现在需要将嵌入式加载定义为映射,如下所示,而不是关联选项:

App.store = DS.Store.create({
  revision: 11,
  adapter: DS.RESTAdapter.create()
});

App.store.adapter.serializer.map('App.Post', {
   comments: {embedded: 'load'}
});

App.Post = DS.Model.extend({
  title: DS.attr('string'),
  body: DS.attr('string'),
  comments: DS.hasMany('App.Comment')
});

App.Comment = DS.Model.extend({
   body: DS.attr('string'),
   post: DS.belongsTo('App.Post')
});

您可以通过以下链接关注之前的所有讨论:

https://github.com/emberjs/data/issues/504#issuecomment-11256934https://github.com/emberjs/data/pull/430#issuecomment-10925506

加载嵌入记录的各种修复:https://github.com/emberjs/data/pull/541

这不直接相关,但如果我上面写的所有内容都失败,则将此解决方案添加到组合中使用 findAssociation 和 extractHasMany 挂钩进行异步 HasMany 时,BelongsTo 关联不会具体化:https://github.com/emberjs/data/issues/525

任何想要快速查看与“App.store.adapter.serializer.map”调用有关的事物定义位置的人的内部结构

当我们调用“App.store.adapter.serializer.map”时,对序列化器的调用在下面的第 536 行定义,并且地图在第二个链接中的在线 696

https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/adapter.js#L536https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/adapter.js#L696

在第 67 行DS.REST适配器这延伸了DS适配器, the 序列化器属性被指向DS.REST序列化器其中特定于的附加功能休息适配器被添加。

https://github.com/emberjs/data/blob/master/packages/ember-data/lib/adapters/rest_adapter.js#L67

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

无法获取 hasMany 关联 的相关文章

随机推荐

  • ‘echo’换行符抑制[重复]

    这个问题在这里已经有答案了 为什么不 echo n write n虽然在终端上 n是用单引号写的吗 因为引号是由 shell 处理的echo命令接收明文 n 如果你想回声 n 您可以例如printf s n n
  • 具有客户端身份验证的 GCDAsyncSocket

    我一直在使用CocoaAsyncSocket无需 SSL 即可将数据发送到我们的服务器 现在服务器端已经实现了带有客户端身份验证的 SSL TLS 为了在我们的应用程序中实现这一点 我获得了以下三个文件 ca chain cert pem
  • 是否可以隐藏 C++ 代码中定义的密码

    这样浏览反汇编代码不会立即暴露密码 声明为静态变量 举个例子 想象一个程序附加了一个 zip 文件 必须打开该文件才能获取资源 但不易被窥探者访问 我知道不可能完全隐藏或保护该拉链 但我很好奇有什么方法可以至少阻止一个不经意的窥探者 Tha
  • Visual Studio解决方案资源管理器不显示表单cs文件

    Cant find user code file of Windows form in solution explorer now I must right click on form class and choose lt gt View
  • 使用 ncurses 调整终端大小和滚动问题

    我正在使用 ncurses 库用 C 进行编程 这是第一次 但有两个问题 我在 ubuntu 上使用默认终端 gnome 终端 1 我需要调整终端的大小 我使用了 resizeter 和 resize term 但它们失败了 2 我使用sc
  • iTextSharp:PdfPCell 中使用哪些对齐属性?

    当我使用单元格对齐时 它可以工作 PdfPCell cell1 new PdfPCell new Phrase Text Font cell1 HorizontalAlignment 2 但一旦对齐不起作用 PdfPCell cell1 n
  • 在 C++ 中将彩色文本打印到控制台

    我想编写一个可以将彩色文本输出到控制台的 Console 类 所以我可以做类似的事情 基本上是 printf 的包装 Console Print This is a non coloured message n Console Warnin
  • 如何在按键而不是长按/点击时实现上下文菜单

    我有一个 ListActivity 我想为每个列表元素实现上下文菜单 我知道执行此操作的常见方法是在长按 点击时显示上下文菜单 我想知道是否有一种方法可以在按键 最好是菜单键 上显示每个元素的上下文菜单 要重新表述我的问题 如何通过按菜单键
  • 向命名空间下的命名路由助手添加前缀

    这就是公共命名空间的样子 namespace admin do resources posts end 它创建了一个像这样的命名路由 new admin post path 这是我的问题 如何将前缀 如本例中的 new 添加到命名空间下的命
  • 数百万个点使用哪种 GEO 实现

    我试图找出使用哪种 GEO 实现来根据某个点的长 纬度找到最近的点 我将有数百万甚至数十亿个不同的纬度 经度点需要比较 我一直在研究许多不同的实现来完成我需要完成的工作 我研究过 Postgis 看起来很流行并且性能良好 Neo4J 图形数
  • 如何获取Android设备中的相机传感器尺寸?

    谁能知道如何获取 Android 设备中相机的传感器尺寸 Thanks 从 API 级别 21 开始 这是可能的 来自文档 https developer android com reference android hardware cam
  • 使用 Python 中的 imaplib 在 Gmail 中创建草稿邮件

    我想编写一个 python 模块 将数据发送到 G 邮件帐户中的草稿消息 大约两周前我写了一个脚本 使用 imaplib 完美运行 我的模块的简化示例如下 我已经创建了一个测试电子邮件地址 供任何人测试此脚本 import imaplib
  • 列出我的计算机上的所有文件并按大小排序

    最近我遇到了一个问题 我的硬盘已经满得令人讨厌 但在检查了我的个人文件并删除 移动了所有超大的视频文件后 我仍然有相当少量的可用 ROM 因此 我让我的程序员大脑开始工作 决定不再亲自仔细检查每个文件夹和子文件夹 并使用 Windows 的
  • Eclipse Spring Boot - 在 HibernateJpaAutoConfiguration 和 CacheAutoConfiguration 之间检测到自动配置周期

    我正在使用在我的服务中注入一些其他项目 但是在集成它们时我面临以下异常 java lang IllegalStateException 在 org springframework boot autoconfigure orm jpa Hib
  • git-receive-pack:在 Windows 中找不到命令

    想知道如何在 Windows 中解决此问题 当我尝试使用命令 git push origin master 时 我得到 git receive pack 找不到命令 知道如何在 Windows 中解决这个问题吗 GIT 的路径位于 c pr
  • 使用map对列表元素求和

    我想知道是否可以使用映射来对列表的元素求和 assume a 1 2 3 4 list map sum a 会给出一个错误int object is not iterable因为列表需要可迭代 map sum a 是一个有效的语句 但给定对
  • 渲染不同组件警告时无法更新组件

    我在反应中收到此警告 index js 1 Warning Cannot update a component ConnectFunction while rendering a different component Register T
  • Golang - 扫描某类型的所有结构

    我是 Go 的初学者 我可能认为多年来使用其他语言过于传统 但这就是我想在 Go 中做的事情 假设以下用例 我有接口 I 该接口有函数 start 和 stop 有许多结构体实现该接口 结构体A 结构体B 结构体C 当应用程序启动时 我想在
  • 打印没有行索引和列索引的矩阵

    如果我打印一个矩阵 它会在控制台中显示行索引和列索引 例如 gt print diag 3 1 2 3 1 1 0 0 2 0 1 0 3 0 0 1 如何抑制列索引和行索引 IE 像这样的东西 gt print diag 3 indice
  • 无法获取 hasMany 关联

    我使用了提交eaa1123 余烬 和508479d ember data 构建 JS 文件 我从 Rails 后端返回了以下 JSON 它是使用以下命令生成的active model serializers 0 6 0 posts id 4