我在这里提出这个问题,以供其他人参考。我有点希望能得到这个答案,但我还是想描述一下我的经历。
首先,让我简短地解释一下我的问题:我正在将应用程序从ember-data 0.0.14移植到ember-data 1.0.0-beta6。某些人,在某个时候,决定放弃对成员数据中的嵌入式记录的支持是一个好主意。他们已经实现了许多时髦的钩子,以按摩json,但经过大量的尝试,所有可能的修补(extractSingle,extractArray,normalizeHash,任何你能想到的),我的结论是,ember将永远不会与结构化文档工作。即使得到正确的对象结构,子属性也不能被访问,因为成员没有看到子模型,可能是因为它们不受支持吗?管他呢。
我说的不是json响应中嵌入的相关文档,而是一个复杂的结构化文档,如下所示:
{
"_id": "prod1",
"_rev": "20-bcea8facfe04b3a2e3924e810dfc5ecd",
"features": {
"contact-numbers": 1,
"agents": 2,
"outgoing-call-minutes": 50,
"basic-crm": true,
"google-apps-integration": true,
"call-recording": false,
"unlimited-agents": false
},
"publish": true,
"price": {
"product": 10,
"service": 0,
"line": 10,
"agent": 0,
"minute": 0,
"minute-806": 0.18
},
"product_description": "Entrepreneur",
"active": true,
"payment_periodicity": "MONTHLY",
"type": "product",
"product_name": "Entrepreneur"
}这是一个单一的文件,但对于成员-数据,这是一个禁止。在旧的成员数据中,我可以在模板中引用price.product,或者对其执行.get('price.product'),或者观察它,这样就可以了。不再是了。(如果可以同时拉三根线来支撑,我不在乎。维护人员都是不关心,所以我放弃了)
我仍然需要将我的应用程序移植到我的最后一个成员数据,所以我想出了一个解决方案:在服务器中预扁平化文档,并在POSTing / PUTting时将其去扁平。为了自动完成这一任务(并避免使用另一种手工编码的映射),我需要一个字符作为分隔符,这个字符在属性名中永远不会出现。例如,使用.
{ '_id': 'prod1',
'_rev': '20-bcea8facfe04b3a2e3924e810dfc5ecd',
'active': True,
'features.agents': 2,
'features.basic-crm': True,
'features.call-recording': False,
'features.contact-numbers': 1,
'features.google-apps-integration': True,
'features.outgoing-call-minutes': 50,
'features.unlimited-agents': False,
'payment_periodicity': 'MONTHLY',
'price.agent': 0,
'price.line': 10,
'price.minute': 0,
'price.minute-806': 0.18,
'price.product': 10,
'price.service': 0,
'product_description': 'Entrepreneur',
'product_name': 'Entrepreneur',
'publish': True,
'type': 'product'}这是如此简单,即使是余烬数据也能理解。嗯,别这么快!这个点对成员数据来说意味着什么,所以它不能用作分隔符。我试过:
X:工作,但我不能使用它,因为它不能唯一地被识别为去扁平,并且使代码变得丑陋。.:专门为成员-数据.我猜这是用来访问嵌入式对象的。/:没有运气。为什么?#:在车把模板中特殊,所以不要这么做>:没有。为什么?::特殊的属性绑定和其他东西,所以不要尝试它。_:不幸的是,我的很多房产都有下划线(还有,余烬会损坏它们)-:不幸的是,我不是很一致,我的一些属性都有破折号--没有人是完美的!:)我需要的是一个具有以下属性的字符:
.get、.set、.property、.observes和任何其他与成员相关的功能一起使用。XXX这样的东西作为分隔符,但是这会使我的模板和ember代码变得很难看。我的问题:
更新
标识符的车把只有某些允许的字符,所以这就排除了我尝试的很多东西。
发布于 2014-02-14 13:18:47
字符§对我的目的是很好的:它不与工具栏/成员/成员-数据冲突,并且在javascript属性中被允许。到目前为止,我的扁平文件工作正常。
https://stackoverflow.com/questions/21750182
复制相似问题