В настоящее время я разрабатываю приложение на основе no-sql (используя raven db). Основным аспектом этого приложения является древовидная структура данных с множеством узлов, подузлов и так далее.
В настоящее время каждый узел или подузел представлен объектом C#. Отношения родитель-потомок создаются с набором подузлов на родительском узле, отношение только вперед.
Все это обрабатывается специальными формами в приложении Mvc с соответствующими GET и POST для каждого типа данных. Весь график хранится в формате JSON в Raven DB.
Теперь цель состоит в том, чтобы изменить часть пользовательского интерфейса с помощью KnockoutJS. Поскольку KO также работает со структурами данных json, мне было интересно, есть ли способ сделать структуру ravendb json «совместимой с нокаутом», что означает, что я могу напрямую использовать ее, не создавая структуру, специфичную для KO (для реализации наблюдаемых и т. д.) а затем создать сопоставление между ними.
Пример графа объектов:
public class NodeA
{
public string Name {get;set;}
public List<SubNode> Childs {get;set;}
}
public class SubNode
{
public string Name {get;set;}
public bool SomeBool {get;set;}
}
public class NodeB
{
public string Name {get;set;}
public int SomeInt {get;set;}
}
public class GraphToStore
{
public List<NodeA> NodeAList {get;set;}
public List<NodeB> NodeBList {get;set;}
}
Часть чтения/записи по-прежнему будет обрабатываться на стороне сервера с вызовами ajax после обновления материала в пользовательском интерфейсе. Проверка будет выполняться на стороне сервера и также будет возвращена клиенту через вызовы ajax. Моя проблема, как я уже сказал, заставить ravendb json работать с нокаутом, иначе мне придется реконструировать все это и отобразить его, а график огромен (более 50 классов).