不要怂,就是干,撸起袖子干!

Commit 09d982ac by Calvin Tan

fix for $not

$not tests

$not: null test

$not fix v2

fixed confusing use of !

fix confusing use of !

typeof value.$not

some nesting errors.

changed else if nesting (semantics issue)

setup a separate if block for $not normalisation.

comment changes. if value short circuit.
1 parent 9612da15
......@@ -1580,7 +1580,7 @@ module.exports = (function() {
$gt: '>',
$lte: '<=',
$lt: '<',
$not: 'NOT',
$not: 'IS NOT',
$is: 'IS',
$like: 'LIKE',
$notLike: 'NOT LIKE',
......@@ -1708,12 +1708,18 @@ module.exports = (function() {
value = {
$in: value
};
} else if (value.$not && Array.isArray(value.$not)) {
} else if (value && Array.isArray(value.$not)) {
value.$notIn = value.$not;
delete value.$not;
}
}
// normalize $not: non-bool|non-null to $ne
if (value && typeof value.$not !== 'undefined' && [null, true, false].indexOf(value.$not) < 0) {
value.$ne = value.$not;
delete value.$not;
}
// Setup keys and comparators
if (Array.isArray(value) && fieldType instanceof DataTypes.ARRAY) {
value = this.escape(value, field);
......
......@@ -121,15 +121,21 @@ suite(Support.getTestDialectTeaser('SQL'), function() {
testsql('deleted', {
$not: true
}, {
default: "[deleted] NOT true",
mssql: "[deleted] NOT 'true'",
sqlite: "`deleted` NOT 1"
default: "[deleted] IS NOT true",
mssql: "[deleted] IS NOT 'true'",
sqlite: "`deleted` IS NOT 1"
});
testsql('deleted', {
$not: null
}, {
default: "[deleted] NOT NULL"
default: "[deleted] IS NOT NULL"
});
testsql('muscles', {
$not: 3
}, {
default: '[muscles] != 3'
});
testsql('muscles', {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!