{"id":43443,"library":"node-mysql-query-utils","title":"node-mysql-query-utils","description":"A MySQL query builder and database helper for Node.js, providing DatabaseManagement for connection pooling, SQLBuilder for constructing SELECT/INSERT/UPDATE/DELETE queries, and TableModel for CRUD operations. Version 1.0.8 is stable with TypeScript types included. Unlike raw mysql2, it offers higher-level abstractions like soft delete, central fields management, and multi-database support. Active development is infrequent; last release 2023.","status":"active","version":"1.0.8","language":"javascript","source_language":"en","source_url":"https://github.com/johntam718/node-mysql2-helper","tags":["javascript","mysql","mysql2","query","utils","node","nodejs","query-builder","query-builder-mysql","typescript"],"install":[{"cmd":"npm install node-mysql-query-utils","lang":"bash","label":"npm"},{"cmd":"yarn add node-mysql-query-utils","lang":"bash","label":"yarn"},{"cmd":"pnpm add node-mysql-query-utils","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Underlying MySQL driver for query execution","package":"mysql2","optional":false}],"imports":[{"note":"ESM-only, no default export. Named import required for all classes.","wrong":"const DatabaseManagement = require('node-mysql-query-utils').DatabaseManagement","symbol":"DatabaseManagement","correct":"import { DatabaseManagement } from 'node-mysql-query-utils'"},{"note":"Not a default export; must use named import.","wrong":"import SQLBuilder from 'node-mysql-query-utils'","symbol":"SQLBuilder","correct":"import { SQLBuilder } from 'node-mysql-query-utils'"},{"note":"Case-sensitive 'TableModel' with capital T.","wrong":"import { tableModel } from 'node-mysql-query-utils'","symbol":"TableModel","correct":"import { TableModel } from 'node-mysql-query-utils'"},{"note":"Lowercase 'sqlHelper' object with helper methods like createColumns.","wrong":"import { SqlHelper } from 'node-mysql-query-utils'","symbol":"sqlHelper","correct":"import { sqlHelper } from 'node-mysql-query-utils'"}],"quickstart":{"code":"import { DatabaseManagement, TableModel, SQLBuilder, sqlHelper } from 'node-mysql-query-utils';\n\nDatabaseManagement.connectSingleDatabase('mainDB', {\n  host: process.env.DB_HOST ?? 'localhost',\n  user: process.env.DB_USER ?? 'root',\n  password: process.env.DB_PASS ?? '',\n  database: process.env.DB_NAME ?? 'test'\n}, { verbose: false });\n\nconst mainDB = DatabaseManagement.getInstance('mainDB');\nconst columns = sqlHelper.createColumns(['id', 'name', 'email']);\nconst userModel = mainDB.createTableModel({\n  tableName: 'users',\n  primaryKey: 'id',\n  columns\n});\n\n// Insert a record\nuserModel.insertRecord({ name: 'Alice', email: 'alice@example.com' }).then(console.log).catch(console.error);\n\n// Build a query manually\nconst query = new SQLBuilder().select('*').from('users').where({ id: 1 }).buildQuery();\nconsole.log(query);","lang":"typescript","description":"Shows connecting to MySQL using DatabaseManagement, creating a TableModel for CRUD, and manually building a SELECT query with SQLBuilder."},"warnings":[{"fix":"Update to version 1.0.0 or later and pass config object as { host, user, password, database }.","message":"DatabaseManagement.connectSingleDatabase() changed signature: second parameter is now a config object instead of multiple strings.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Call connectSingleDatabase() multiple times with different identifiers.","message":"DatabaseManagement.connectMultipleDatabases() is deprecated in favor of connectSingleDatabase() for each database.","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Always call connectSingleDatabase() or connectMultipleDatabases() at app startup before any model usage.","message":"DatabaseManagement must be initialized before creating TableModel instances; getInstance() will throw if connection not set up.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Ensure columns array includes the primaryKey field and spelling matches.","message":"The primaryKey field in createTableModel must exist in the columns array, or queries may fail silently.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Replace sqlBuilder.executeQuery() with db.query(sql, params).","message":"SQLBuilder.executeQuery() is deprecated; use DatabaseManagement.getInstance().query() directly instead.","severity":"deprecated","affected_versions":">=1.0.5"},{"fix":"Add isDeletedField to centralFields object when creating the TableModel.","message":"Soft delete (softDeleteOne, softDelete) require centralFields.isDeletedField to be set in TableModel config.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use DatabaseManagement.getInstance('db').createTableModel({...}) instead of new TableModel(...).","message":"TableModel constructor changed from direct instantiation to factory method createTableModel on database instance.","severity":"breaking","affected_versions":"<1.0.0"}],"env_vars":null,"search_vec":"'1.0.8':31 '2023':64 'abstract':46 'activ':58 'builder':9,74,77 'central':50 'connect':18 'construct':22 'crud':28 'databas':11,56 'databasemanag':16 'delet':49 'develop':59 'field':51 'helper':12 'higher':44 'higher-level':43 'includ':37 'infrequ':61 'javascript':65 'last':62 'level':45 'like':47 'manag':52 'multi':55 'multi-databas':54 'mysql':3,7,66,78 'mysql2':40,67 'node':2,70 'node-mysql-query-util':1 'node.js':14 'nodej':71 'offer':42 'oper':29 'pool':19 'provid':15 'queri':4,8,24,68,73,76 'query-build':72 'query-builder-mysql':75 'raw':39 'releas':63 'select/insert/update/delete':23 'soft':48 'sqlbuilder':20 'stabl':33 'support':57 'tablemodel':26 'type':36 'typescript':35,79 'unlik':38 'util':5,69 'version':30","created_at":"2026-06-05T16:59:49.426425+00:00","updated_at":"2026-06-05T16:59:49.426425+00:00","problems":[{"fix":"Use: import { DatabaseManagement } from 'node-mysql-query-utils'","cause":"Missing or incorrect import statement.","error":"Cannot find name 'DatabaseManagement'"},{"fix":"Ensure connectSingleDatabase() is called before getInstance().","cause":"DatabaseManagement was not properly initialized before calling getInstance.","error":"DatabaseManagement.getInstance is not a function"},{"fix":"Use mainDB.createTableModel({...}) instead of new TableModel({...}).","cause":"Attempting to instantiate TableModel directly instead of using createTableModel factory.","error":"TableModel is not a constructor"},{"fix":"Check that identifier passed to getInstance matches one used in connectSingleDatabase().","cause":"DatabaseManagement.getInstance() returned undefined because connection identifier doesn't exist.","error":"Cannot read properties of undefined (reading 'query')"},{"fix":"Import as: import { sqlHelper } from 'node-mysql-query-utils' (lowercase 's').","cause":"sqlHelper is imported as incorrect case or not at all.","error":"sqlHelper.createColumns is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/johntam718/node-mysql2-helper#readme","github":"https://github.com/johntam718/node-mysql2-helper","docs":null,"changelog":null,"pypi":null,"npm":"node-mysql-query-utils","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}