Вопрос

Как я могу сделать что-то вроде:

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"
    }
]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top