在JavaScript中操作数据库:Node.js上的PostgreSQL与MongoDB

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 JavaScript 中处理数据库:Node.js 上的 PostgreSQL 和 MongoDB



现代 JavaScript 网页开发离不开高效的数据管理。Node.js 作为服务器端平台,提供了强大的工具来与各种数据库管理系统(DBMS)进行交互。在本文中,我们将详细探讨两种流行解决方案的使用——关系型 PostgreSQL 和面向文档的 MongoDB。您将学习如何连接这些数据库、执行 CRUD 操作(创建、读取、更新、删除)以及如何在它们之间做出明智的选择。



本材料对于刚开始学习 JavaScript 后端的初学者以及希望系统化知识的有经验开发者都很有用。所有代码示例均针对 Node.js 运行时环境编写。



环境准备和驱动程序安装



在开始之前,需要通过 npm 安装相应的包。对于 PostgreSQL,使用驱动程序 pg;对于 MongoDB,使用官方驱动程序 mongodb 或流行的 ODM 库 mongoose。



创建一个新项目并安装依赖项:



mkdir db-example && cd db-examplenpm init -ynpm install pg mongoose


现在您的环境已准备好进行实验。确保您的机器上已启动相应的数据库服务器(PostgreSQL 在端口 5432,MongoDB 在端口 27017)。



1. 通过 pg 驱动程序使用 PostgreSQL



PostgreSQL 是一个强大的关系型 DBMS,支持 SQL。在 Node.js 中与之交互使用的是 pg 包,它既提供连接池也提供单独的客户端。



让我们看一个基本的连接和执行查询示例:



const { Pool } = require('pg');

// 配置连接池const pool = new Pool({ user: 'postgres', host: 'localhost', database: 'testdb', password: 'your_password', port: 5432,});

// 用于处理数据库的异步函数async function runPostgresExample() { try { // 创建表 await pool.query(` CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, age INTEGER ); `);

// INSERT — 添加数据 const insertResult = await pool.query( 'INSERT INTO users (name, email, age) VALUES ($1, $2, $3) RETURNING *', ['Иван Петров', 'ivan@example.com', 30] ); console.log('已添加用户:', insertResult.rows[0]);

// SELECT — 读取数据 const selectResult = await pool.query('SELECT * FROM users'); console.log('所有用户:', selectResult.rows);

// UPDATE — 更新数据 await pool.query( 'UPDATE users SET age = $1 WHERE name = $2', [31, 'Иван Петров'] ); console.log('年龄已更新');

// DELETE — 删除数据 await pool.query('DELETE FROM users WHERE name = $1', ['Иван Петров']); console.log('用户已删除'); } catch (err) { console.error('PostgreSQL 错误:', err.message); } finally { await pool.end(); }}

runPostgresExample();


请注意使用带有占位符 $1、$2 等的参数化查询。这可以防止 SQL 注入,是一种最佳实践。建议在生产环境中使用连接池,因为它能有效管理连接。



2. 通过 Mongoose 使用 MongoDB



MongoDB 是一种 NoSQL 数据库,以类似 JSON 的格式(BSON)存储数据。Mongoose 提供了方便的抽象层,包含模式、验证和用于处理集合的方法。



使用 Mongoose 进行连接和 CRUD 操作的示例:



const mongoose = require('mongoose');

// 定义用户模式

博客

书籍推荐