【问题标题】:Ember.js: How to access JSON API metadata from store.findRecord callEmber.js:如何从 store.findRecord 调用访问 JSON API 元数据
【发布时间】:2016-02-14 00:57:52
【问题描述】:

我目前正试图弄清楚在使用 store.findRecord() 调用时如何访问元数据。

在指南 (http://guides.emberjs.com/v2.1.0/models/handling-metadata/) 中,它说可以通过执行以下操作来访问元数据:

store.query('post').then((result) => {
  let meta = result.get('meta');
})

我希望这在使用 findRecord 时也能工作

store.findRecord('book', params.id, {adapterOptions: {query: params}}).then((result) => {
    let meta = result.get('meta');
})

但是,这总是为 meta 属性返回 undefined。我假设使用findRecord 时未设置元数据。我正在返回有效的 JSON-API,其顶级属性为 meta,如下所示:

{
  "meta": {
    "page": {
      "number": 1,
      "size": 100,
      "total": 20
    },
   "data":[
       // data here
    ]
  }
}

在使用 findRecord() 和 JSONAPISerializer 和 JSONAPIAdapters 时,有没有办法访问服务器返回的元数据?

谢谢!

我正在使用以下版本:

Ember             : 2.1.0
Ember Data        : 2.1.0
jQuery            : 1.11.3

【问题讨论】:

  • 在进行 findRecord 时,该记录是否已经存在于商店中?
  • 好主意,但它还没有出现在商店中。我还检查以确保在 chrome 检查器中正在发出网络请求并且确实如此。我开始认为这只是现在不支持。根据 slack 中的一些讨论,元键似乎只适用于集合。
  • query vs queryRecord vs findRecord 等上查看 Ember 指南。我认为您尝试使用 findRecord 做的事情是不可能的:guides.emberjs.com/v2.1.0/models/finding-records
  • @vikram7 是的,我认为 findRecord 不支持开箱即用的元数据。我很好奇是否有解决方法。
  • 你可以覆盖序列化器

标签: ember.js ember-data json-api


【解决方案1】:

元数据不支持每条记录,如果您使用store.query() 或在获取关系时,您可以计算它们是否可用。 引用:

目前,Ember Data 仅了解查询和关系的顶级元对象(通过相关链接)。

查看以下 github thread 了解更多信息。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
  • 2022-06-10
  • 2017-08-18
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
相关资源
最近更新 更多