我正在为我的 Ember 应用程序编写 Web 套接字服务。该服务将订阅一个 URL,并接收数据。数据会将模型推送到 Ember Data 的store
.
URL 方案不代表标准的 RESTful 路由;它不是/posts
,/users
例如,它类似于/inbound
。一旦我订阅,它将成为各种事件的导火索。
对于我订阅的每个路由,我都需要实现特定于该路由的数据处理,以将数据转换为 Ember Data 期望的格式。我的问题是,最好的地方在哪里?
我将收到的示例事件对象:
event: {
0: "device:add",
1: {
device: {
devPath: "/some/path",
label: "abc",
mountPath: "/some/path",
serial: "abc",
uuid: "5406-12F6",
uniqueIdentifier: "f5e30ccd7a3d4678681b580e03d50cc5",
mounted: false,
files: [ ],
ingest: {
uniqueIdentifier: 123
someProp: 123,
anotherProp: 'abc'
}
}
}
}
我想将数据标准化,就像这样
device: {
id: "f5e30ccd7a3d4678681b580e03d50cc5",
devPath: "/some/path",
label: "abc",
mountPath: "/some/path",
serial: "abc",
uuid: "5406-12F6",
mounted: false,
files: [ ],
ingestId: 123
},
ingest: {
id: 123,
someProp: 123,
anotherProp: 'abc'
}
然后将其交给知道如何将设备模型和摄取模型添加到商店的东西。我只是对 ember 数据中的所有抽象感到困惑。
问题:
- 为了将记录添加到存储中,我应该将最终的标准化 JSON 传递给哪种方法?
store.push
? - 初始数据处理(即从数组中获取事件数据)的合适位置在哪里?应用程序序列化器的
extractSingle
?pushPayload
? 在不同的路线上,大部分的加工都是非标准的。 - 完成初始处理后,是否应该对数据中的每个键使用每种类型的序列化程序?即我是否应该将初始“blob”应用程序序列化程序,然后将每个键委托给每个模型的序列化程序?
参考: