Как я могу написать НЕ равное условие в Waterline?
Этот код:
Users
.count()
.where({
id: { '!=': req.params.id},
lastname: req.body.lastname
})
Ничего не делает... (адаптер диска в sails.js)
Как я могу написать НЕ равное условие в Waterline?
Этот код:
Users
.count()
.where({
id: { '!=': req.params.id},
lastname: req.body.lastname
})
Ничего не делает... (адаптер диска в sails.js)
Во-первых, он ничего не делает, потому что поиск в базе данных асинхронен. Вы должны сделать цепочку длиннее и добавить exec или что-то из библиотеки Q, как тогда.
User.count().where({
id: { '!=': req.params.id },
lastname: req.body.lastname
}).exec(function(err, num){
console.log(num);
});
Теперь он возвращает 0. Чтобы он возвращал правильное число вместо '! =', просто напишите '!'.
Добавление этого ответа для всех, кто использует Postgres. Я пытался это и ударился головой о стену, так как она не работала, и я не мог понять, почему. Я обыскал все и продолжал находить этот ответ.
Если вы используете postgres, вы хотите использовать
id: { not: req.params.id }
После просмотра Sailsjs документации и поиска Google долго и упорно я нашел этот ответ в комментариях модуля query.js парусов-PostGreSQL. Надеюсь, это поможет спасти кого-то в той же ситуации некоторое время. Вот полный блок комментариев, который спас мне разум.
/**
* Specifiy a `where` condition
*
* `Where` conditions may use key/value model attributes for simple query
* look ups as well as more complex conditions.
*
* The following conditions are supported along with simple criteria:
*
* Conditions:
* [And, Or, Like, Not]
*
* Criteria Operators:
* [<, <=, >, >=, !]
*
* Criteria Helpers:
* [lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual, not, like, contains, startsWith, endsWith]
*
* ####Example
*
* where: {
* name: 'foo',
* age: {
* '>': 25
* },
* like: {
* name: '%foo%'
* },
* or: [
* { like: { foo: '%foo%' } },
* { like: { bar: '%bar%' } }
* ],
* name: [ 'foo', 'bar;, 'baz' ],
* age: {
* not: 40
* }
* }
*/