{"id":26037,"library":"odata-v4-mysql","title":"odata-v4-mysql","description":"OData V4 MySQL Connector (v0.1.1) converts OData V4 query segments like $filter, $select, $skip, $top, $orderby, and $expand into MySQL SQL statements. Provides functions createFilter, createQuery, and createDelete. Supports TypeScript types, can be used with any MySQL driver. No major updates since 2016; considered stable but low activity. Differentiator: direct mapping of OData to MySQL SQL, lightweight, no ORM needed.","status":"maintenance","version":"0.1.1","language":"javascript","source_language":"en","source_url":"https://github.com/jaystack/odata-v4-mysql","tags":["javascript","OData","V4","sql","typescript"],"install":[{"cmd":"npm install odata-v4-mysql","lang":"bash","label":"npm"},{"cmd":"yarn add odata-v4-mysql","lang":"bash","label":"yarn"},{"cmd":"pnpm add odata-v4-mysql","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Correct for ESM. CJS users must use require with .createFilter","wrong":"const createFilter = require('odata-v4-mysql')","symbol":"createFilter","correct":"import { createFilter } from 'odata-v4-mysql'"},{"note":"Named export, not default.","wrong":"import createQuery from 'odata-v4-mysql'","symbol":"createQuery","correct":"import { createQuery } from 'odata-v4-mysql'"},{"note":"Both named import and require destructuring work. No wrong pattern for CJS.","wrong":"const { createDelete } = require('odata-v4-mysql')","symbol":"createDelete","correct":"import { createDelete } from 'odata-v4-mysql'"}],"quickstart":{"code":"import { createFilter } from 'odata-v4-mysql';\nimport * as mysql from 'mysql';\n\nconst connection = mysql.createConnection({\n  host: 'localhost',\n  user: 'root',\n  password: process.env.DB_PASSWORD ?? '',\n  database: 'test'\n});\n\n// Example OData filter: $filter=Id eq 42\nconst filter = createFilter('Id eq 42');\nconnection.query(`SELECT * FROM Users WHERE ${filter.where}`, filter.parameters, (err, rows) => {\n  if (err) throw err;\n  console.log(rows);\n});\nconnection.end();","lang":"typescript","description":"Create a MySQL connection, build an OData $filter, and execute the query with parameters."},"warnings":[{"fix":"Use filter.where and filter.parameters separately in your query.","message":"createFilter returns an object with 'where' and 'parameters', not a complete SQL string.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"You must provide your own HTTP server and OData parser (e.g., odata-v4-server).","message":"The package does not support authentication or any middleware; it only compiles OData segments to SQL.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Use createQuery to generate full SELECT statements including $select, $skip, $top, $orderby.","message":"The 'createQuery' function is not shown in the README; it exists and can be used for more complex queries.","severity":"gotcha","affected_versions":">=0.0.1"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run 'npm install odata-v4-mysql' and verify import path is correct.","cause":"Package not installed or typo in import path.","error":"Cannot find module 'odata-v4-mysql'"},{"fix":"Add type import: import { createFilter, Filter } from 'odata-v4-mysql'; then const filter: Filter = createFilter(...);","cause":"Using createFilter without type assertions in TypeScript.","error":"Property 'where' does not exist on type '{}'"},{"fix":"Install 'mysql' package and create connection with mysql.createConnection().","cause":"Using wrong MySQL driver or not creating connection properly.","error":"mysql connection.query is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}