如何从Socket.IO响应中将数据加载到Ember Data?

时间:2013-02-26 15:17:51

标签: node.js ember.js socket.io ember-data

我正在编写一个应用程序,它通过Node.js利用Ember.js,Ember Data和Socket.IO。我试图找出从套接字响应中接收数据的最佳方法,并将其加载到我的Ember数据存储中,例如:

window.socket = io.connect('http://localhost');

socket.on('action here', function(response) {
  // how to load "response" JSON data into Ember Data store from here...?
});

编写自定义DS.Adapter是最好(或唯一好)的解决方案吗?还是有另一种好的,可维护的方法来实现这个目标吗?

2 个答案:

答案 0 :(得分:4)

最好的方法是编写自己的适配器,但是如果你只需要加载模型(没有保存),你就可以使用适配器的load方法 - 就像这样:

socket.on('single-model', function(response) {
    DS.defaultStore.load(response);
});

socket.on('multiple-models', function(response) {
    for(i in response){
        DS.defaultStore.load(response[i]);
    }
});

将适配器定义为FixtureAdaptor

答案 1 :(得分:1)

为了记录,我最终得到了这里提出的答案:

https://stackoverflow.com/a/14508316/1470194

使用Ember.Instrumentation技术,我能够方便地调用我的控制器并以这种方式访问​​我的商店。

我意识到在许多情况下编写自定义适配器可能是必要的,但它超出了我的项目所要求的范围,所以这个解决方案最终是完美的。