Я пытаюсь понять, будет ли 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
у меня есть один или несколько query
экземпляров.Каждый запрос содержит список posting
экземпляров.Каждый posting
относится к документу.Более одного posting
может ссылаться на данный document
, если экземпляры posting
принадлежат разным query
экземплярам.
Если posting
относится к новому документу (еще нет)получено любым query
) Я хотел бы создать новый экземпляр;если document
уже существует (идентификаторы уникальны), я хотел бы использовать его повторно.
Я вижу несколько возможных альтернатив для структурирования данных JSON, возвращаемых сервером:
- При сериализации проводок сначала сериализуйте список всех документов и обновите список основных документов ими.Затем отправьте сообщения со ссылками на идентификаторы документов.
- Полностью сериализуйте каждый документ как свойство публикации, а затем выясните, является ли эта запись избыточной.Добавьте не избыточные записи в основной список.
Каков разумный шаблон для сериализации данных?Есть ли какая-то магия плагинов для картографии, которая кратко выразит это?У меня есть контроль над сервером, который генерирует JSON, и я могу структурировать его любым способом, который имеет смысл.
Спасибо,
Gene