{"id":26040,"library":"odata-v4-typeorm-improved","title":"odata-v4-typeorm-improved","description":"OData V4 to TypeORM query compiler that translates OData query strings ($filter, $orderby, $top, $skip, $expand, $select, $search, etc.) into TypeORM query builder calls. Current stable version 1.0.3 (March 2024). Released under MIT license. Differs from other OData-to-ORM libraries by offering a simple middleware integration for Express and NestJS, direct support for TypeORM repositories and query builders, and TypeScript-first design. It wraps TypeORM's repository to produce OData-compliant endpoints with minimal boilerplate. Suitable for building REST APIs that follow the OData protocol on top of any SQL database supported by TypeORM. Requires TypeORM >=0.3.28.","status":"active","version":"1.0.3","language":"javascript","source_language":"en","source_url":"https://github.com/yarkovaleksei/odata-v4-typeorm-improved","tags":["javascript","typeorm","odata","nodejs","express","nestjs","V4","sql","node","typescript"],"install":[{"cmd":"npm install odata-v4-typeorm-improved","lang":"bash","label":"npm"},{"cmd":"yarn add odata-v4-typeorm-improved","lang":"bash","label":"yarn"},{"cmd":"pnpm add odata-v4-typeorm-improved","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency - required for repository and query builder types","package":"typeorm","optional":false}],"imports":[{"note":"ESM-only since v1.0.0. This function is a middleware factory that takes a TypeORM Repository and returns an Express middleware.","wrong":"const odataQuery = require('odata-v4-typeorm-improved').odataQuery","symbol":"odataQuery","correct":"import { odataQuery } from 'odata-v4-typeorm-improved'"},{"note":"Named export, not default. Accepts a repository or query builder and the query parameters object.","wrong":"import executeQuery from 'odata-v4-typeorm-improved'","symbol":"executeQuery","correct":"import { executeQuery } from 'odata-v4-typeorm-improved'"},{"note":"Same function name but called with a SelectQueryBuilder instead of a Repository. The library exports only two functions.","wrong":"import { executeQueryBuilder } from 'odata-v4-typeorm-improved'","symbol":"executeQuery (by query builder)","correct":"import { executeQuery } from 'odata-v4-typeorm-improved'"}],"quickstart":{"code":"import express from 'express';\nimport { odataQuery } from 'odata-v4-typeorm-improved';\nimport { getRepository } from 'typeorm';\nimport { User } from './entities/User';\n\nconst app = express();\nconst port = 3001;\n\napp.get('/api/users', odataQuery(getRepository(User)));\n\napp.listen(port, () => console.log(`Server running on port ${port}`));","lang":"typescript","description":"Creates an Express endpoint that translates OData query parameters to TypeORM queries using the provided repository."},"warnings":[{"fix":"Use import syntax or upgrade to Node 14+ with 'type':'module' in package.json.","message":"v1.0.0 changed from CJS to ESM-only. CommonJS require() will break.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Install 'odata-v4-typeorm-improved' and update imports.","message":"v1.0.0 renamed package from 'odata-v4-typeorm' to 'odata-v4-typeorm-improved'. Old package may be stale.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Migrate to 'odata-v4-typeorm-improved' version 1.0.0 or later.","message":"The old package 'odata-v4-typeorm' (pre-1.0.0) is deprecated and unmaintained.","severity":"deprecated","affected_versions":"<1.0.0"},{"fix":"Ensure typeorm@^0.3.28 is installed.","message":"TypeORM peer dependency is version 0.3.28 or higher. Older TypeORM versions may cause runtime errors.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Call executeQuery(repo, req.query) not executeQuery(repo, req).","message":"The executeQuery function expects req.query object (not the full Express Request). Passing the request object directly will fail.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'0.3.28':106 '1.0.3':33 '2024':35 'api':89 'boilerpl':84 'build':87 'builder':28,65 'call':29 'compil':11 'compliant':80 'current':30 'databas':100 'design':70 'differ':40 'direct':58 'endpoint':81 'etc':24 'expand':21 'express':55,111 'filter':17 'first':69 'follow':91 'improv':5 'integr':53 'javascript':107 'librari':47 'licens':39 'march':34 'middlewar':52 'minim':83 'mit':38 'nestj':57,112 'node':115 'nodej':110 'odata':2,6,14,44,79,93,109 'odata-compli':78 'odata-to-orm':43 'odata-v4-typeorm-improved':1 'offer':49 'orderbi':18 'orm':46 'produc':77 'protocol':94 'queri':10,15,27,64 'releas':36 'repositori':62,75 'requir':104 'rest':88 'search':23 'select':22 'simpl':51 'skip':20 'sql':99,114 'stabl':31 'string':16 'suitabl':85 'support':59,101 'top':19,96 'translat':13 'typeorm':4,9,26,61,73,103,105,108 'typescript':68,116 'typescript-first':67 'v4':3,7,113 'version':32 'wrap':72","created_at":"2026-05-01T13:47:53.581239+00:00","updated_at":"2026-05-01T13:47:53.581239+00:00","problems":[{"fix":"Switch to import syntax or set type: module in package.json.","cause":"Using require() with an ESM-only package (v1.0.0+).","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module not supported"},{"fix":"npm install odata-v4-typeorm-improved and update imports.","cause":"Package renamed; old name is no longer published.","error":"Cannot find module 'odata-v4-typeorm'"},{"fix":"Use import { odataQuery } from 'odata-v4-typeorm-improved'.","cause":"Importing odataQuery as default import instead of named import.","error":"TypeError: odataQuery is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/yarkovaleksei/odata-v4-typeorm-improved","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/odata-v4-typeorm-improved","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database","web-framework","http-networking","data"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-05-01","next_check":"2026-07-30","install_tag":null}}