Ember.js DS.defaultStore.load(App.foo,payload)仅在DS.RESTAdapter首次使用时有效

Ember.js DS.defaultStore.load(App.foo,payload)仅在DS.RESTAdapter首次使用时有效,ember.js,ember-data,Ember.js,Ember Data,更新: 这不是问题 (见下文) 因此,我写了一个JSFIDLE来显示除了小提琴工作之外的坏行为!而我真正的代码没有。唯一的区别是我在实际代码中使用了RESTAdapter,因此数据是从服务器而不是FIXTURES中提取的 在JSFIDLE中:首先单击“模拟第一次手动加载”,然后单击第二个按钮以查看它是否正常工作(即连续多次将新的或更新的数据加载到存储) 问题 我正在通过WebSocket将更新的信息发送到我的Ember应用程序。我成功地设置了一个监听器,在正确的控制器上触发一个函数,并且能够第

更新: 这不是问题 (见下文)

因此,我写了一个JSFIDLE来显示除了小提琴工作之外的坏行为!而我真正的代码没有。唯一的区别是我在实际代码中使用了
RESTAdapter
,因此数据是从服务器而不是
FIXTURES
中提取的

在JSFIDLE中:首先单击“模拟第一次手动加载”,然后单击第二个按钮以查看它是否正常工作(即连续多次将新的或更新的数据加载到存储)

问题

我正在通过WebSocket将更新的信息发送到我的Ember应用程序。我成功地设置了一个监听器,在正确的控制器上触发一个函数,并且能够第一次更新记录。但是,所有连续的尝试都不会更新存储,我想知道这是否与存储的状态有关?但如果是这样的话,我不确定如何处理

这是更新或添加来自WebSocket的记录的代码:

App.SessionController = Ember.ObjectController.extend({

  updateReceived: function(data) {
    console.log(data);      

    DS.defaultStore.load(App.Choice, data.choice);
    DS.defaultStore.load(App.Question, data.question);
  }
});
请注意
console.log(数据)
部分。每次我通过WebSocket发送更新的数据时,都会调用
updateReceived
,每次都会记录正确的数据,但是
DS.defaultStore.load(…)
只在第一次时起作用

我之所以更新这两个
App.Question
App.Choice
是因为它们之间存在关系:

App.Question = DS.Model.extend({
  "choices" : DS.hasMany('App.Choice')
});
App.Choice = DS.Model.extend({
  "question" : DS.belongsTo('App.Question')
});
我认为下面的代码与这个问题无关,但为了防止有人感兴趣,我就是这样通过WebSocket(使用socket.io)侦听事件的:

对于如何将新的或更新的记录直接加载到存储中(而不是一次),是否有任何建议

更新:

代码确实是正确的。新数据加载到存储中很好,但是当新的/更新的信息加载到
DS.defaultStore

我不想删除这个问题,因为其他人可能会发现其中的信息很有用,但请按照您的喜好投票。很抱歉,在写问题之前我没听清楚

App.SessionRoute = Ember.Route.extend({
  enter: function() {
    this.socket = io.connect('http://10.0.1.4')
  },
  setupController: function(controller, model) {
    var self = this;
    this.socket.on('update', function(data) {
      self.controller.send('updateReceived', data)
    })
  }
});