Ember Websocket ......找不到任何记录?

时间:2014-04-01 13:24:55

标签: ember.js socket.io

所以,我无法从我的livestream websocket中引入数组,这是以JSON形式出现的。

在ember检查器中没有看到任何记录,但很多是使用console.log(数据)打印出来的。得到错误:

-94 Uncaught Error: Assertion Failed: You must include an `id` in a hash passed to `push` 

(但每个直播更新中都包含一个ID)。

以下是代码:http://jsbin.com/qapik/1/edit?html,js,output

JSON看起来像......

{
    "group":{
        "usage":{
            "case1":0,
            "case2":0,
            "case3":0
        },
        "sunshine":"00/00/0000",
        "id":1010,
        "device_info":11.5,
    }
}

控制台显示更新......

Tue Apr 01 2014 09:22:09 GMT-0400 (EDT): group update: {"group": ...

在一天结束时,我想展示{{#each}} {{device_info}} ...等等。

我哪里错了?

谢谢!

编辑 - 解决方案:

App.ApplicationRoute = Ember.Route.extend({
    activate: function() {                
        var socket = window.io.connect('http://localhost:8887');                                                           
        var self = this;                                                                                                   

        socket.on('group_live_stream', function(data){                                                                               
            var dataObj = JSON.parse(data); // data happens to be a JSON string
            self.store.push('group',dataObj.group);                                                                              
        });                                                                                                                
     }
});

1 个答案:

答案 0 :(得分:0)

推送到商店的对象应按照以下示例中的格式进行格式化:http://emberjs.com/api/data/classes/DS.Store.html#method_push

{
    "usage":{
        "case1":0,
        "case2":0,
        "case3":0

    },
    "sunshine":"00/00/0000",
    "id":1010,
    "device_info":11.5
}

换句话说,当您将其推送到商店时,该对象不应包含在group中。这与Ember Data期望使用它的REST适配器的JSON响应的方式明显不同(当ED获得组记录时,它确实期望像{group:{...}}这样的对象。)