Registry / database / node-sql-2

node-sql-2

JSON →
library0.80.1jsnpmunverified

node-sql is a SQL query builder for Node.js that supports PostgreSQL, MySQL, Microsoft SQL Server, Oracle, and SQLite dialects. Current stable version is 0.80.1, maintained primarily by TokyoFarmer. It provides a fluent API to define tables and construct parameterized queries, making it composable and dialect-aware. Key differentiators include automatic parameterization, named queries, and a flexible join system. Unlike ORMs, it focuses purely on SQL generation without abstraction over database drivers. The package ships TypeScript type definitions.

npm install node-sql-2
INSTALL
IMPORT
SIG · NODE-SQL-2
N
node-sql-2
databasejavascriptv0.80.1
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

sql (default import)
import sql from 'sql'
const sql = require('sql').default
Module uses CommonJS default export. ESM import works as default.
sql.define
import sql from 'sql'; const user = sql.define({ name: 'user', columns: ['id', 'name'] })
const { define } = require('sql'); const user = define({...})
sql.define is a method on the default export, not a named export.
Query (TypeScript type)
import type { Query } from 'sql'
import { Query } from 'sql'
Query is a TypeScript type, only import as type to avoid runtime errors.

Shows basic table definition, SELECT query with parameterized WHERE clause, and retrieving the generated SQL text and values.

const sql = require('sql'); sql.setDialect('postgres'); const user = sql.define({ name: 'user', columns: ['id', 'name', 'email'] }); const query = user .select(user.id, user.name) .from(user) .where(user.email.equals('user@example.com')) .toQuery(); console.log(query.text); // SELECT "user"."id", "user"."name" FROM "user" WHERE ("user"."email" = $1) console.log(query.values); // ['user@example.com']
Debug
Known issues
deprecatedsql.setDialect() is deprecated; prefer using sql.createQuery with dialect options or rely on the default postgres dialect.
fix
Use dialect-specific module or instantiate builder with dialect.
affects: >=0.80.0
gotchaAll column references use property names defined in columns array, but if you use property alias, the generated SQL uses the original column name.
fix
Always reference columns using the property name if defined.
affects: >=0.0.0
gotchaParameterized queries use numbered placeholders ($1, $2, etc.) regardless of dialect, which may conflict with some database adapters that expect $n for PostgreSQL.
fix
Check dialect-specific output and possibly use .toString() instead of .toQuery().text if adapter handles parameters.
affects: >=0.0.0
Errors
Common errors & fixes
Error: require('sql') returns { default: ... } in ESM context
ESM import of CommonJS module without using default import.
fix
Use 'import sql from "sql"' instead of named imports.
TypeError: user.select is not a function
Using a column name that conflicts with built-in method (e.g., 'select').
fix
Rename the column or access via user['select'].
Upgrade
Version history
0.80.1latest on npm
Audit
Dependencies

No dependency data recorded yet.

Agent activity
7 hits · last 30 days
node
6
Resources
node-sql-2 — npm install node-sql-2 · libregistry