О метаданных
gimntut opened this issue · comments
Изучая allobjects, я порадовался, что объект может находиться в нескольких коллекциях. Это невероятно крутая возможность, которая позволяет найти счёт-фактуру 2015 года и в коллекции "Счета-фактуры" и в "Документы 2015".
Но меня расстроило то, что метаданные вдруг оказались внутри объекта. Это очень плохо, что такие данные передаются на клиент. Но ещё хуже, что у меня нет ни какой возможности использовать метаданные в работе, т.к. таковыми они не являются.
Рассмотрим такой allobjects:
{
"d": {
"results": [{
"id": "2e0402-6e51-4d16-be61-3975e07b39",
"a": "2",
"collections": [{
"id": "table1"
}]
}, {
"id": "table1"
}]
}
}
В реальности это должно было выглядеть так (сравнение):
{
"d": {
"results": [{
"id": "2e0402-6e51-4d16-be61-3975e07b39",
"a": "2",
"meta": {
"type": "record",
"collections": [{
"id": "table1"
}]
},
}, {
"id": "table1",
"meta": {
"type": "collection",
"flags": []
}
}]
}
}
Типы могут быть следующими: record (запись), collection (коллекция), user collection (пользовательская коллекция), system collection (системная коллекция), scalar (объект)
ссылка по теме
Scalar - это такие вещи, как пользователь ($user), правила ($rules) и опции ($options)
Флаги, это дополнительные возможности, которые доступны для коллекции:
- timestamp - временная метка
- revision - ведение ревизий записей
- и т.д.
Как это работает (сравнение):
{
"d": {
"results": [{
"id": "2e0402-6e51-4d16-be61-3975e07b39",
"a": "2",
"meta": {
"type": "record",
"collections": [{
"id": "table1"
}],
"timestamp": "1436601928",
"revision": "762190",
"isLastRevision": true
},
}, {
"id": "2e0402-6e51-4d16-be61-3975e07b39",
"a": "1",
"meta": {
"type": "record",
"collections": [{
"id": "table1"
}],
"timestamp": "1434009921",
"revision": "190762",
"IsLastRevision": true
},
}, {
"id": "table1",
"meta": {
"type": "collection",
"flags": ["timestamp", "revision"]
}
}]
}
}
Метаданные не должны передаваться на клиент, если это не указано явно в запросе. И обязательно должен быть выбор, какие метаданные передавать, а какие нет:
.../collections/table1/?flags=timestamp,revision