我定义了以下模型:
App.Post = DS.Model.extend({
title: DS.attr('string'),
comments: DS.hasMany('comment')
});
App.Comment = DS.Model.extend({
message: DS.attr('string')
});
如果我使用Comment创建一个Post条目,那么存储在我的浏览器本地存储中的JSON会引用注释作为一组ID,这些ID很有用:
...
"o3duh":{
"id":"o3duh",
"title":"How to write Ember",
"comments":[
"jf0a2"
]
}
...
然而,当我添加另一篇帖子时,JSON突然改变,以便嵌入评论:
...
"o3duh":{
"id":"o3duh",
"title":"How to write Ember",
"comments":[
{
"message":"First!"
}
]
},
"6kudl":{
"id":"6kudl",
"title":"Learning Ember is painful",
"comments":[
]
}
...
为什么会这样?我能预防吗?这导致了我的问题,因为一旦它变成这种嵌入格式,重新加载页面时LSAdapter就无法读取数据。
这是一个JSBin所以你可以看到它发生在自己身上并看到完整的JSON等。要重现问题,只需创建一个帖子并添加注释,然后你就可以毫无问题地刷新页面。然后添加另一篇文章并尝试刷新页面。
我不确定问题是使用ember-data还是localstorage适配器。
答案 0 :(得分:1)
我通过修改LocalStorageAdapter解决了这个问题,因此它只尝试以预期的格式保留JSON。
您可以在此处查看我提交给原作者的拉取请求:https://github.com/rpflorence/ember-localstorage-adapter/pull/26
希望它能够融入LSAdapter项目,或者更好的是,有人会提出更好的解决方案;)
答案 1 :(得分:0)
我能够通过在Comment:
上定义反向关系来修复JSON问题App.Comment = DS.Model.extend({
message: DS.attr('string'),
post: DS.belongsTo('post')
});
现在有新问题,但希望这会有所帮助。