NodeJS OData(V4) Server Implementation.
This project is under heavy development.
Just check the demo project for features preview.
- OASIS Standard
OData
Version 4.0 server - usable as a standalone server, or as an
Express
router - expose service document and service metadata -
$metadata
- setup metadata using decorators or @odata/metadata
- supported data types are
Edm primitives
,complex types
,navigation properties
- support
create
,read
,update
, anddelete
theEntitySets
, - support
action imports
,function imports
,bounded actions
andbounded functions
onEntitySets
- support for full OData query language using @odata/parser
- filtering entities -
$filter
- sorting -
$orderby
- paging -
$skip
and$top
- projection of entities -
$select
- expanding entities -
$expand
- count records -
$count
- filtering entities -
- support async controller functions using
Promise
,async/await
- support
OData
V4.01 JSON format$batch
operation - support dependency inject
- support
deep insert
Define domain model
class, it will be transformed to database schema.
Define Action/Function
on the Domain Models
.
Using the actions
implement the partially focused business logics, and use the functions
implement complex queries.
Hook is general business logic for specify Domain Model
, like beforeCreate
/beforeUpdate
, and it's mapped from OData
/HTTP Method
.
Define Hooks
to implement the general business logics for entity.
Using services
in hook
/action
/function
, keep the business consistence for single domain model.
Each model will have its own standard CRUD
service which enhanced with hooks
logic.
Each TransactionContext
will use single database transaction (connection).