Node.js ä¸äºå½æ°
Node.js å端å¯ä»¥éè¿ PostgreSQL åè®®ç´è¿ CloudBase PostgreSQLï¼éå夿 SQLãäºå¡ãæ¹å¤çãåå°ä»»å¡åå¯¹å¤ APIã
å¨ CloudBase ä¸ï¼å¸¸è§è¿è¡ç¯å¢å æ¬äºå½æ°ãäºæç®¡åèªæ Node.js æå¡ãç产ç¯å¢å»ºè®®ä½¿ç¨ç¯å¢åé管çè¿æ¥ä¿¡æ¯ï¼å¹¶å¤ç¨è¿æ¥æ± ã
å®è£ ä¾èµâ
npm install pg
å¦æä½¿ç¨ TypeScriptï¼å¯ä»¥åæ¶å®è£ ç±»å声æã
npm install -D @types/pg
é ç½®ç¯å¢åéâ
建议使ç¨ç¯å¢åéä¿åè¿æ¥ä¿¡æ¯ã
PGHOST=your-postgres-host
PGPORT=5432
PGDATABASE=postgres
PGUSER=app_user
PGPASSWORD=your-password
ä¸è¦ææ°æ®åºå¯ç æäº¤å°ä»£ç ä»åºãäºå½æ°åäºæç®¡å¯å¨æ§å¶å°é ç½®ç¯å¢åéã
åå»ºè¿æ¥æ± â
å°è¿æ¥æ± æ¾å¨æ¨¡åé¡¶å±ï¼ä¾¿äºäºå½æ°å¤ç¨è¿è¡æ¶å®ä¾ã
import pg from "pg";
const pool = new pg.Pool({
host: process.env.PGHOST,
port: Number(process.env.PGPORT || 5432),
database: process.env.PGDATABASE,
user: process.env.PGUSER,
password: process.env.PGPASSWORD,
ssl: { rejectUnauthorized: false },
max: Number(process.env.PGPOOL_MAX || 5),
idleTimeoutMillis: 30_000,
});
export async function query(sql, params = []) {
return pool.query(sql, params);
}
äºå½æ°ç¤ºä¾â
import { query } from "./db.js";
export async function main(event) {
const limit = Math.min(Number(event.limit || 20), 100);
const { rows } = await query(
"select id, title, done from public.todos order by created_at desc limit $1",
[limit]
);
return { data: rows };
}
åæ°å¿ é¡»ä½¿ç¨å ä½ç¬¦ä¼ å ¥ï¼é¿å SQL æ³¨å ¥ã
äºå¡â
éè¦å¤æ¥åå ¥ä¿æä¸è´æ¶ï¼ä½¿ç¨åä¸ä¸ª client æ§è¡äºå¡ã
const client = await pool.connect();
try {
await client.query("begin");
await client.query("insert into public.orders(user_id, status) values($1, $2)", [userId, "pending"]);
await client.query("insert into public.logs(user_id, action) values($1, $2)", [userId, "create_order"]);
await client.query("commit");
} catch (error) {
await client.query("rollback");
throw error;
} finally {
client.release();
}
æ´å¤äºå¡æ¦å¿µè¯·åè äºå¡ã
è¿æ¥æ± 建议â
serverless ç¯å¢å¯è½åæ¶å¯å¨å¤ä¸ªå®ä¾ãè¿æ¥æ± æå¤§è¿æ¥æ°åºæâå®ä¾æ° à æ¯å®ä¾è¿æ¥æ°âä¼°ç®ï¼é¿å è¶ è¿æ°æ®åºè¿æ¥ä¸éã
建议ä»è¾å°ç max å¼å§ï¼ä¾å¦ 3 å° 5ãè¥ä¸å¡å¹¶åè¾é«ï¼åºç»åæ
¢æ¥è¯¢ä¼åãéååå³°æè¿æ¥æ± 代çè½å综åå¤çã
æéè¾¹çâ
æå¡ç«¯ç´è¿éå¸¸ä½¿ç¨æ°æ®åºè´¦å·è®¿é®ï¼ä¸ä¼èªå¨æºå¸¦ç»ç«¯ç¨æ·èº«ä»½ãè¥æå¡ç«¯éè¦æ§è¡ç¨æ·ææéï¼åºå¨ SQL 䏿¾å¼ä¼ å
¥ user_idï¼æä½¿ç¨åéè´¦å·åæ°æ®åºçç¥æ§å¶èå´ã
åç«¯ç¨æ·ç´æ¥è®¿é®æ°æ®åºæ¶ï¼åºä½¿ç¨ RLSãæå¡ç«¯ç®¡çåè½åä¸åºæ´é²ç»å®¢æ·ç«¯ã