2013-09-05 2 views
1

Есть ли способ сделать схематическую комплексные свойства в Breeze JS?breezejs - schemaless complex properties

У меня есть прецедент, где мне нужно хранить таблицы поиска клиентов. Эти таблицы поиска могут иметь любое количество столбцов и строк. Мое предпочтительное решение состоит в том, чтобы хранить их как объект JSON формы:

{'columns': ['one', 'two', 'three'], 'rows': [{'one': 1, 'two': 2, 'three', 3}]}

В бэкэнд это не проблема, я могу сохранить его как объект JSON в postgres. Я просто не могу понять, как получить бриз для лечения этого объекта как есть, и не обрабатывать его.

Есть ли способ сделать комплексные свойства схемы в Breeze JS?

ответ

4

Если вы создадите свойство с типом DataType «Undefined», Breeze будет сериализовать данные, не пытаясь его конвертировать или принуждать.

 var et = new EntityType({ 
     shortName: "Foo", 
     namespace: "Sample.Models" 
    }); 
    et.addProperty(new DataProperty({ 
     name: "columns", 
     dataType: DataType.Undefined 
    })); 

Обратите внимание, что по состоянию на Breeze 1.4.0, мы теперь также поддерживаем нескалярное dataproperties, чтобы вы могли также сделать следующее.

et.addProperty(new DataProperty({ 
     name: "columns", 
     dataType: DataType.String 
     isScalar: false 
    })); 

Также, не показано, вы можете фактически создавать свойства, являющиеся массивами complexTypes. См. Примеры Breeze Node/Mongo для примера такого рода метаданных. (Это может быть использовано для вашего свойства «rows»).