【问题标题】:EmberFire Data Relationships not updating correctlyEmberFire 数据关系未正确更新
【发布时间】:2023-04-02 02:50:01
【问题描述】:

更新:下面是一篇关于 Ember 数据关系的原始帖子,我认为它与 EmberFire 适配器的问题以及如何处理 hasMany 数组记录更相关。似乎 Ember Data 中的本地 store 正在适当更新,但是在更新存储后这些记录没有被推送到相应的 Firebase 数据库中。

我添加了 emberfire 和 firebase 标签,希望能在该社区中找到答案。感谢您提供任何帮助,我很乐意根据需要提供更多信息。


我有两个用 hasMany 和 belongsTo 关系定义的模型。这是第一个“框架”模型:

// -- Frameworks Model
import DS from 'ember-data';
const { attr, hasMany } = DS;

export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
  attrs: {
    questions: { serialize: 'ids' }
  } 
});

export default DS.Model.extend({
  name: attr('string'),
  reports: hasMany('report'),
  questions: hasMany('question', {async: true}),
  includedFramework: attr('string'),
  reportOnlyOnce: attr('string', { defaultValue: false }),
  frameBuilder: attr('string', {defaultValue: "none"}),
  createdAt: attr('string'),
  createdBy: attr('string'),
  updatedAt: attr('string'),
  updatedBy: attr('string')
});

还有第二个“问题”模型:

// -- Question Model
import DS from 'ember-data';
const { attr, hasMany, belongsTo } = DS;

export default DS.Model.extend({
  framework: belongsTo('frameworks', {async: true}),
  detail: attr('string'),
  type: attr('string'),
  createdAt: attr('string'),
  createdBy: attr('string'),
  position: attr('number'),
  options: hasMany('option')
});

在我的路线上,我为框架拉入模型(在这种情况下定义模型 ID 用于测试):

import Ember from 'ember';

export default Ember.Route.extend({
  model(params) {
    let id = params.report_id;
    var self = this;

    return Ember.RSVP.hash({
      report: this.store.find('report', id),
      general: this.store.find('frameworks', '-KITSAxjdE5TiVdk-aPC')
    })
  }
});

出于某种原因,这个框架有一个存储在问题中的数组,其中包含应该属于它的 6 个不同“问题”中的 4 个。我不知道为什么 4 个也存储在框架模型中,而其中 2 个没有。在我的页面模板中:

   {{#each model.general.questions as |question|}}

      {{#paper-item class="md-1-line"}}
        <p class="question">
          {{question.detail}}
        </p>
        <p class="option">
          {{#if (eq question.type "text")}}
            {{paper-input value=question.id onChange=(action (mut question.id))}}
          {{/if}}
        </p>

      {{/paper-item}}

{{#each model.general.questions as |question|}} 适用于实际存储在该 ID 的框架模型中的 4 个问题,但不适用于其他 2 个问题。其他 2 个问题确实具有引用正确框架的 belongsTo 关系。

我尝试在框架模型中添加一个序列化程序(如上所示),但没有任何变化。

我还尝试在创建新问题时手动将问题添加到框架存储:

framework.get('questions').then(function(question) {
  return question.pushObject(newQuestion);
 })

但也没有改变。

欢迎提出任何想法,我也很乐意提供任何其他相关代码 sn-ps。

【问题讨论】:

    标签: ember.js firebase ember-data emberfire


    【解决方案1】:

    此问题似乎与 EmberFire 响应具有 belongsTohasMany 关系的模型的方式有关,其中具有 hasMany 引用子模型的“父”模型不会在 @987654325 时自动更新@模型已创建。

    已在 GitHub 上提交了一个问题,以继续调查如何解决此问题:https://github.com/firebase/emberfire/issues/412

    【讨论】:

    • 我在 Github 问题中添加了一些上下文
    猜你喜欢
    • 1970-01-01
    • 2020-11-08
    • 2014-01-09
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多