SQL Databases in Node.js
pg (PostgreSQL) aur, mysql2 (MySQL), POPULAR, Node.js, DRIVERS, HAIN, SQL, DATABASES, ke, liye — RAW, SQL, QUERIES, RUN, karne, ke, liye, DIRECT, WAY, DETE, HAIN.
PARAMETERIZED, QUERIES, (jaise, $1, ya, ?) USE, karna, CRITICAL, hai — STRING, CONCATENATION, se, SQL, QUERIES, banaने, SE, SQL, INJECTION, VULNERABILITY, ho, sakti hai.
const { Pool } = require("pg");
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
async function getUser(id) {
// Parameterized query — SQL injection SAFE:
const result = await pool.query("SELECT * FROM users WHERE id = $1", [id]);
return result.rows[0];
}
// NEVER: pool.query(`SELECT * FROM users WHERE id = ${id}`) — VULNERABLE- pg/mysql2 = SQL databases ke liye, popular, Node.js drivers
- Parameterized queries ($1, ?), SQL, injection, se, BACHATE, HAIN
- String concatenation se, queries, banaна, NEVER, karo
Transactions, MULTIPLE, QUERIES, ko, EK, "ALL-OR-NOTHING" UNIT, mein, GROUP, karte, HAIN — AGAR, KOI, EK, QUERY, FAIL, hoti, hai, POORI, TRANSACTION, ROLLBACK, ho, jaati hai, DATA, CONSISTENCY, MAINTAIN, karne, ke, liye.
const client = await pool.connect();
try {
await client.query("BEGIN");
await client.query("UPDATE accounts SET balance = balance - 100 WHERE id = 1");
await client.query("UPDATE accounts SET balance = balance + 100 WHERE id = 2");
await client.query("COMMIT");
} catch (e) {
await client.query("ROLLBACK");
} finally {
client.release();
}Prepared, STATEMENTS, (PARAMETERIZED, QUERIES) SIRF, SECURITY, ke, liye, NAHI, HAIN — DATABASE, QUERY, PLAN, ko, CACHE, kar, sakta hai, jab, SAME, QUERY, STRUCTURE, BAAR-BAAR, DIFFERENT, PARAMETERS, ke, saath, RUN, hoti hai, JISSE, PERFORMANCE, BHI, IMPROVE, hoti hai.