サーバーから取得したJSONが、モデルの外観と正確に1対1ではないBackboneアプリケーションがあります。モデルにカスタム解析関数を使用しています。例:
parse: function(response) {
var content = {};
content.id = response.mediaId;
content.image = response.image.url;
return content;
}
これは機能します。ただし、場合によっては、API呼び出しがあり、一度に多くの情報を取得します。たとえば、画像に関する情報user
とcomments
:
{
"mediaId": "1",
"image": {
"title": "myImage",
"url": "http://image.com/234.jpg"
},
"user": {
"username": "John"
},
"comments": [
{
"title": "Nice pic!"
},
{
"title": "Great stuff."
}
]
}
ここから新しいユーザーモデルとコメントコレクションを作成するにはどうすればよいですか?これはオプションです:
parse: function(response) {
var content = {};
content.id = response.mediaId;
content.image = response.image.url;
content.user = new User(response.user);
content.comments = new Comments(response.comments);
return content;
}
ここでの問題は、new User
またはnew Comments
を入力として生のJSONを使用して作成することにより、BackboneがJSONプロパティを属性として追加するだけであるということです。parse
代わりに、オブジェクトの構造を制御するための中間的な方法が必要です。オプションは次のとおりです。
parse: function(response) {
// ...
content.user = new User({
username: response.user.username
});
// ...
}
...しかし、それはあまり乾燥防止ではありません。
だから、私の質問は、モデル/コレクションの属性を制御して、1つのJSON応答からいくつかのモデル/コレクションを作成するための良いパターンは何でしょうか?
ありがとう!