{"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,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","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,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}