我定义了以下模型:
App.Post = DS.Model.extend({
title: DS.attr('string'),
comments: DS.hasMany('comment')
});
App.Comment = DS.Model.extend({
message: DS.attr('string')
});
如果我创建一个带有评论的帖子条目,则存储在我的浏览器本地存储中的 JSON 将评论作为一个 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 适配器上。