Петля StrongLoop — как исключить результаты без связанных результатов модели

Я использую этот Node API JSON, который возвращает клиентов, их экземпляры и версии экземпляров.

Customers.find({
    "include": {
        "relation": "instances",
        "scope": {
            "include": {
                "relation": "versions"
            }
        }
    }
});

Я хотел бы исключить всех клиентов, у которых нет связанных экземпляров, в результате JSON есть запись «экземпляры» с пустым []. однако, когда я пытаюсь использовать это в «где», я получаю ошибку сервера... есть идеи, или я делаю это неправильно?


person dave-o    schedule 03.03.2015    source источник
comment
Что такое версия экземпляра? Это модель с определенным отношением к клиенту?   -  person superkhau    schedule 03.03.2015
comment
Да, модель клиента имеет много экземпляров, модель экземпляра имеет много версий. Приведенный выше JSON работает, но я хочу исключить всех клиентов, у которых нет экземпляров.   -  person dave-o    schedule 03.03.2015


Ответы (1)


Если вы используете MongoDB в качестве своей базы данных, вы можете добавить свойство where в свой фильтр на том же уровне, что и ваше первое включение, например:

var filter = {
    where: {
        relationId: {
            exists: false
        }
    },
    include: {...}
};
Customers.find(filter, function ( err, results ) {...});

См. выпуск #1009 для получения подробной информации/обновлений. : реализация базы данных.

Кроме того, вы можете просто отфильтровать результаты с помощью Lodash:

var customersWithInstances = _.filter( customers, function ( customer )
{
    return customer.instanceId;
});
person Terekhov    schedule 05.05.2015