KnockoutJS が私のアプリケーションで機能するかどうかを理解しようとしています。私のデータモデル(簡略化)は次のとおりです。
function topic(data) {
this.id = data.id;
this.queries = ko.observableArray([]);
}
function query(data) {
this.id = data.id;
this.text = data.text;
this.searcher = data.searcherId;
this.postings = ko.observableArray([]);
}
function posting(data, query) {
this.documentId = data.docid;
this.rank = data.rank;
this.snippet = data.snippet;
this.score = data.score;
this.query = query;
this.document = null;
}
function document(data, topic) {
this.id = data.id;
this.url = data.url;
this.topic = topic;
}
特定topic
の に対して、1 つ以上のquery
インスタンスがあります。各クエリには、posting
インスタンスのリストが含まれています。それぞれposting
がドキュメントを参照します。インスタンスが異なるインスタンスに属している限り、複数のインスタンスposting
を参照できます。document
posting
query
posting
a が新しいドキュメント (まだ取得されていないドキュメント) を参照する場合query
、新しいインスタンスを作成したいと思います。がdocument
既に存在する場合 (ID が一意)、再利用したいと思います。
サーバーから返される JSON データを構造化するためのいくつかの可能な代替手段を確認できます。
- 転記をシリアル化するときは、最初にすべてのドキュメントのリストをシリアル化し、それらでマスター ドキュメント リストを更新します。次に、ドキュメント ID への参照を含む投稿を送信します。
- 各ドキュメントを投稿のプロパティとして完全にシリアル化し、そのエントリが冗長かどうかを調べます。マスター リストに冗長でないエントリを追加します。
データをシリアル化するための合理的なパターンは何ですか? これを簡潔に表現するマッピング プラグイン マジックはありますか? 私は、JSON を生成しているサーバーを制御しており、それを理にかなった方法で構造化することができます。
ありがとう、
遺伝子