Is it possible to have multiple "or" clauses in criteria object?
Summary
The docs show the following example:
const criteria = {
is_active: true,
or: [{
'name like': '%homepage%'
}, {
'stats.runs >': 5
}]
};
What should I do if I want another OR in the same criteria?
Things I've tried:
- Add an "and"
criteria["and"] = {
"or": [{"deleted": "false"}, {"deleted": null}]
};
This fails with:
2019-07-18T14:48:24.011Z - error: message=key.trim is not a function, stack=TypeError: key.trim is not a function at module.exports (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/massive/lib/util/parse-key.js:15:13) at _.reduce (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/massive/lib/statement/where.js:189:23) at arrayReduce (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/lodash/lodash.js:683:21) at Function.reduce (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/lodash/lodash.js:9683:14) at generateConjunction (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/massive/lib/statement/where.js:172:12) at _.reduce (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/massive/lib/statement/where.js:148:30) at /Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/lodash/lodash.js:914:11 at /Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/lodash/lodash.js:4911:15 at baseForOwn (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/lodash/lodash.js:2996:24) at /Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/lodash/lodash.js:4880:18
- Using another format that worked for me in other cases, but doesn't seem to work well with null:
criteria["deleted"] = [false, null];
This fails with error:
2019-07-18T14:50:08.103Z - error: message=Cannot read property 'toString' of null, stack=TypeError: Cannot read property 'toString' of null at condition.value.value.map.v (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/massive/lib/statement/where.js:193:44) at Array.map () at _.reduce (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/massive/lib/statement/where.js:193:33) at /Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/lodash/lodash.js:914:11 at /Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/lodash/lodash.js:4911:15 at baseForOwn (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/lodash/lodash.js:2996:24) at /Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/lodash/lodash.js:4880:18 at baseReduce (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/lodash/lodash.js:911:5) at Function.reduce (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/lodash/lodash.js:9683:14) at generateConjunction (/Users/pablo/Documents/work/projects/bluealba/mlp/spinnaker/experience/node_modules/massive/lib/statement/where.js:172:12)
My current workaround for this it to just use:
criteria["deleted"] = null;
In this case deleted needs to be true
or not exist in the json object, I can't have it with a value of false
.
Expected behavior
Multiple OR clauses
Actual behavior
Not able to make it work