【问题标题】:trouble accessing 'some' async data in Ember在 Ember 中访问“一些”异步数据时遇到问题
【发布时间】:2017-02-10 22:53:56
【问题描述】:

这是与 "ember-data": "~2.11.1"

我有一个包含“输出”的通道模型

outputs: DS.hasMany('output', {
    async: true
}),

并且输出模型包括'identity'

channel: DS.belongsTo('channel'),
identity: DS.belongsTo('identity', {
    async: true
}),

在输出路径(通道下方)中,我在模型中执行此操作

model() {
    let channel = this.modelFor('channel').channel
    let outputs = channel.get('output')
    return Ember.RSVP.hash({
        channel: channel,
        outputs: outputs
    })
}

这让我可以看到属于该频道的所有输出,正如预期的那样。

我遇到的问题是属于输出的身份。

现在身份可以由输出共享,例如一个身份可能是“youtube”,并且可能有 3 个输出具有相同的“youtube”身份

我看到的是其中一个输出具有“youtube”身份详细信息,但其他 2 个输出看到 .get('identity') 为空。

我是否错误地设置了模型或模型挂钩?或者它是否在阻止我再次检索身份(某种缓存?)

【问题讨论】:

  • 这可能是您的服务器响应有问题。也许你发送了一个空的关系?这将被缓存,是的。
  • 找到了服务器响应。在 jsonapi 响应中,“包含”部分包含每个唯一身份的单个副本
  • 你能显示服务器响应吗?哦,我认为是channel.get('outputs') 而不是channel.get('output')。这是笔误吗?
  • 是的,这是一个错字,似乎没有什么影响。

标签: ember.js ember-data


【解决方案1】:

问题解决了!

在输出模型中我需要添加到身份属性:

inverse: null

引用Ember Guide, Models, Relationships, Explicit Inverses

没有倒数的关系可以通过包括 { 逆:空 }。

这一点都不清楚,但 Ember Data 假设某处存在一对一的关系,但实际上并不存在。当 Ember Data 尝试保持这种反向关系同步时,它通常会将其他冲突关系设置为 null。

要解决此问题,您可以使用 inverse: null 明确告诉 Ember Data 不存在反向关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 2017-01-19
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    相关资源
    最近更新 更多