Comments (8)
So far it seems this parser is not capable of having (a and b) or (c and d). Since this is not a farfetched use case, it would be great to have this feature!
from node-odata-parser.
@Hakaze agreed
from node-odata-parser.
It needs to handle operator precedence properly.
from node-odata-parser.
👍
from node-odata-parser.
@ishwor-mis can you provide any insight on this issue?
from node-odata-parser.
What I have found is that if you want to do something like:
$filter=Name eq 'John' and LastName eq 'Doe' or MiddleName eq 'mdle' and emailAddress eq '[email protected]'
You must help this parser out by using grouping operators (
, and )
. If you do this, the parser will do a much better job at constructing the Abstract Syntax Tree (AST).
So I would change the aforementioned filter to:
$filter=(Name eq 'John' and LastName eq 'Doe') or (MiddleName eq 'mdle' and emailAddress eq '[email protected]')
The resulting AST will be much different (Array
based), but will be straightforward enough to decompose/map (via recursion).
from node-odata-parser.
The PEG grammar used still doesn't handle operator precedence correctly. But now that #23 is merged, there is a simple workaround - just use parenthesis in your $filter clause.
from node-odata-parser.
You mean like I did above? That's worked for some time now
from node-odata-parser.
Related Issues (20)
- Feature Request: Nested Filter in Expand
- Arithmetic Operators (Feature Request or Bug)
- OData parsed to SQL sentence
- DateTimeOffset (odata 4.0) filter raises error: expects single quotes
- Single-char identifiers are not supported HOT 1
- OData functions substring() and replace() don't work with 3 parameters. HOT 2
- $filter parsing throws error for some filters HOT 3
- License file should be updated
- pegjs ENOENT HOT 3
- Singles not parsing correctly
- Brackets HOT 3
- Bug in $format Parsing HOT 1
- Bug in $format Parsing HOT 1
- Readme Errors
- is operator in filters throws invalid $filter parameter
- contains filter option is not supported HOT 1
- Support for enums?
- SyntaxError when trying to order by child
- ignore non-odata parameters
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from node-odata-parser.