gpt4 book ai didi

ember.js - 由 hasMany 关系定义的 Ember 子项突然更改为嵌入式模型

转载 作者:行者123 更新时间:2023-12-02 08:02:44 24 4
gpt4 key购买 nike

我定义了以下模型:

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 或本地存储适配器上。

最佳答案

我通过修改 LocalStorageAdapter 解决了该问题,使其仅尝试以预期格式保留 JSON。

您可以在这里查看我提交给原作者的拉取请求:https://github.com/rpflorence/ember-localstorage-adapter/pull/26

希望它能够合并到 LSAdapter 项目中,或者更好的是,有人会提出更好的解决方案;)

关于ember.js - 由 hasMany 关系定义的 Ember 子项突然更改为嵌入式模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18878836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com