Сортировка по свойству
Вопрос
Как я могу сделать что-то вроде:
sort('object.property')
(объект определен как тип «json» в модели)
с ватерлинией?
Обратите внимание, что я использую последнюю стабильную сборку 0.9.~, у которой еще нет ассоциаций.
Решение
Быстрый тест показал sails-mongo
адаптер позволяет сортировать атрибуты JSON «из коробки» (он прозрачно передается в базу данных mongo).
Сначала я создал пустой контроллер и модель, используя:
sails generate foo
Затем я определил data
свойство с типом json
на моей модели:
module.exports = {
attributes: {
data: 'json'
}
};
Я создал несколько объектов, выполнив HTTP POST
с такими данными (я увеличил значение сортировки):
{
"data": {
"sort": 1
}
}
После этого я получил свою коллекцию, используя это GET
запрос:
http://localhost:1337/foo?sort=data.sort+desc
что внутри приведет к вызову типа
Foo.find().sort('data.sort desc').exec(callback);
Ответ сервера теперь сортируется по заданному свойству:
[
{
"data": {
"sort": 3
},
"createdAt": "2014-04-13T09:35:49.734Z",
"updatedAt": "2014-04-13T09:35:49.734Z",
"id": "534a5a7553f1e98e09d1d86b"
},
{
"data": {
"sort": 2
},
"createdAt": "2014-04-13T09:35:45.814Z",
"updatedAt": "2014-04-13T09:35:45.814Z",
"id": "534a5a7153f1e98e09d1d86a"
},
{
"data": {
"sort": 1
},
"createdAt": "2014-04-13T09:35:41.958Z",
"updatedAt": "2014-04-13T09:35:41.958Z",
"id": "534a5a6d53f1e98e09d1d869"
}
]