Ember.js 现在是推送有效载荷的时候了?将记录保存到余烬数据
编辑,因为我缩小了问题的范围 我正在开发一个将API数据作为JSON接收的应用程序。它是一个组数组,包含“name”、“id”和其他类似元素Ember.js 现在是推送有效载荷的时候了?将记录保存到余烬数据,ember.js,websocket,ember-data,Ember.js,Websocket,Ember Data,编辑,因为我缩小了问题的范围 我正在开发一个将API数据作为JSON接收的应用程序。它是一个组数组,包含“name”、“id”和其他类似元素 { "status": "success", "data": { "groups": [ { "id": 7100, "name": "Test 12345", "kind": "floor", "parent_group_id": 7000, "controlled_device_type_count
{
"status": "success",
"data": {
"groups": [
{
"id": 7100,
"name": "Test 12345",
"kind": "floor",
"parent_group_id": 7000,
"controlled_device_type_count": {},
"is_top_level": true
}
]
}}
我还有一个livestream websocket—数据作为JSON流。它应该更新第一个API中引用的元素。两者只共享“id”
直播:
{
"group":{
"usage":{
"10":1,
"20":0,
"30":2,
"40":2
},
"last_change":"2014-03-24T05:56:10Z",
"id":7954
}}
**更新…**我的索引路线:
App.ApplicationAdapter = DS.RESTAdapter.extend({
extractArray: function(store, type, payload, id, requestType) {
payload = payload.data;
return this._super(store, type, payload, id, requestType);
}
});
App.IndexRoute = Ember.Route.extend({
sortProperties: ['id'],
sortAscending: true,
beforeModel: function() {
var socket = window.io.connect('http://localhost:8887');
var self = this;
socket.on('group_live_stream', function(data){
var dataObj = JSON.parse(data);
self.store.push('group',dataObj.group);
});
},
actions: {
toggleMenu: function() {
this.controller.toggleProperty('menuVisible');
this.controller.pushBody();
} },
activate: function() {
var self = this;
$.getJSON('http://localhost:3000/api/groups/top?subscribe=true').then(function(data) {
self.store.pushMany('group', data.data.groups);
});
},
model: function() {
return this.store.all('group');
}
});
更新:
所以现在我看到了livestream的出现——在短暂的瞬间——我看到了API数据(组名),然后它消失了。我想这是因为我只是“推送许多”记录,删除旧记录,而不是更新。我听说/读到pushPayload可能是我的解决方案……但我想不出来。根本没有(当我把它放进去时,我只得到一个错误:“未捕获的错误:找不到'0'的模型”帮助
有什么想法吗
非常感谢
ptep您的API的有效负载不是ember data所期望的格式(默认情况下,它会在JSON的根目录中查找您的有效负载)。您需要在
应用程序适配器上覆盖提取数组
(很可能是提取单个
),如下所示:
ApplicationAdapter = DS.RESTAdapter.extend({
extractArray: function(store, type, payload, id, requestType) {
payload = payload.data;
return this._super(store, type, payload, id, requestType);
}
});
没有骰子,虽然我确实更新了一点路由。关于我消失的数据问题的想法?谢谢,伙计!未捕获错误:没有找到“0”的模型。
错误将表明您尝试推入的JSON格式不正确-在名为0
的有效负载中有一个键,它应该是group
或者groups
。请原谅这个可能“愚蠢”的问题…(如何)我可以告诉它使用groups
?你应该做类似store.pushPayload('{group:{…}')
或者store.pushPayload('{groups:[{},{},{}]}')
的事情,而不是store store.pushPayload('{0:{…}')
或者store.pushPayload('{0:[{},{},{},{}]}')
。只需检查您的JSON以确保一切正常。:)