Получить результаты из модели в Waterline, если свойство определено

У меня есть модель, в которой требуется не каждое свойство. Я хочу запросить модель и вернуть все экземпляры, в которых свойство задано.

Вот как, думаю, должен выглядеть код, но он не работает. Есть идеи или ссылки на подробную документацию?

MyModel.find()
.where({
    "propertyThatMayExist" : {
        "!=" : undefined
    }
});

Большое спасибо заранее!


person Andrew Carreiro    schedule 31.03.2014    source источник


Ответы (1)


Самый простой способ - проверить против null. Правильный оператор ! или not:

MyModel.find().where({propertyThatMayExist: {'!': null}}).exec(console.log);

Это предполагает, что вы не хотите иногда явно устанавливать свойство null для экземпляра, что в любом случае было бы проблематичным для некоторых баз данных (подумайте о MySQL, который по умолчанию устанавливает для большинства полей значение NULL, если они не заполнены).

person sgress454    schedule 31.03.2014
comment
MyModel.find().where({'id': {'!': 5}}).exec(console.log); Это работает, но запрос к нулевому значению возвращает пустой набор. Я пробовал это с идентификатором, а также с атрибутом типа datetime. - person Andrew Carreiro; 01.04.2014
comment
Какой адаптер базы данных вы используете? И действительно ли id может быть нулевым, или вы просто используете это в качестве примера? В зависимости от вашей настройки id никогда не может быть нулевым. - person sgress454; 01.04.2014
comment
Использование диска в настоящее время будет в конечном итоге на mysql. id был просто примером. - person Andrew Carreiro; 02.04.2014
comment
Это решение отлично работает, когда в качестве адаптера используется MySQL, но, похоже, не работает при использовании диска. - person Andrew Carreiro; 08.04.2014