📅  最后修改于: 2023-12-03 14:50:40.970000             🧑  作者: Mango
Node.js 是具有异步、非阻塞 I/O 模型的 JavaScript 运行时。它可以在服务器端运行,允许我们建立高性能、可伸缩性服务的关键。连接数据库是后端服务的一个很重要的组成部分。Node.js提供了多种连接数据库的方式。
Node.js 提供了原生的 mysql
、pg
等模块,用于连接关系型数据库。在使用这些模块前,需要先下载并安装它们。
在 Node.js 中连接 MySQL 数据库十分简单,代码如下:
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'username',
password: 'password',
database: 'database_name'
});
connection.connect((error) => {
if(error) {
console.log('连接出错:', error.stack);
return;
}
console.log('连接成功,ID:', connection.threadId);
});
connection.end((error) => {
console.log('断开连接');
});
上面的代码中,我们创建了一个 mysql
模块的连接对象 connection
,并且使用 connect
方法连接到 MySQL 数据库。在连接成功后,我们打印出连接成功的信息,并且在断开连接的时候,打印出断开连接的信息。
在 Node.js 中连接 PostgreSQL 数据库同样也很容易,代码如下:
const { Pool } = require('pg');
const pool = new Pool({
user: 'username',
host: 'localhost',
database: 'database_name',
password: 'password',
port: 5432
});
pool.connect((error, client, release) => {
if (error) {
return console.error('Error acquiring client', err.stack)
}
console.log('连接成功');
client.query('SELECT NOW()', (error, result) => {
release();
if (error) {
return console.error('Error executing query', error.stack)
}
console.log(result.rows)
});
});
上面的代码中,我们创建了一个 pg
模块的连接池对象 pool
,并且使用 connect
方法连接到 PostgreSQL 数据库。在连接成功后,我们执行一个查询指令,获得当前时间,并且打印出查询结果。
ORM (Object Relational Mapping) 是一种编程技术,可以将对象模型和关系模型映射起来。它可以使我们在编写后端应用程序时,大大简化操作数据库的过程。Node.js 有许多 ORM 框架可供选择,下面介绍两个比较常见的 ORM 框架。
Sequelize 是一个基于 Promise 的 Node.js ORM。它支持 PostgreSQL、MySQL、MariaDB、SQLite 和 MSSQL 等多个数据库系统,并且具有强大的事务支持、关联查询、将查询结果映射为 JavaScript 对象等功能。
使用 Sequelize 连接 MySQL 数据库的代码如下:
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database_name', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'
});
sequelize.authenticate()
.then(() => {
console.log('连接成功');
})
.catch((error) => {
console.error('连接出错:', error);
})
.finally(() => {
sequelize.close();
});
使用 Sequelize 连接 PostgreSQL 数据库的代码如下:
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database_name', 'username', 'password', {
host: 'localhost',
dialect: 'postgres',
dialectOptions: {
ssl: true
}
});
sequelize.authenticate()
.then(() => {
console.log('连接成功');
})
.catch((error) => {
console.error('连接出错:', error);
})
.finally(() => {
sequelize.close();
});
TypeORM 是一个与 TypeScript 集成的 ORM 库,支持多种类型的数据库,如 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server等。它拥有强大的查询功能,支持多重继承、装饰器等特性,提供了很多高级的功能,如实体注释、数据库迁移、缓存等。
使用 TypeORM 连接 MySQL 数据库的代码如下:
import "reflect-metadata";
import { createConnection } from "typeorm";
createConnection({
type: "mysql",
host: "localhost",
port: 3306,
username: "username",
password: "password",
database: "database_name",
entities: [
__dirname + "/entity/*.js"
],
synchronize: true,
logging: false
}).then(connection => {
console.log("连接成功");
}).catch(error => {
console.error("连接出错:", error);
});
使用 TypeORM 连接 PostgreSQL 数据库的代码如下:
import "reflect-metadata";
import { createConnection } from "typeorm";
createConnection({
type: "postgres",
host: "localhost",
port: 5432,
username: "username",
password: "password",
database: "database_name",
entities: [
__dirname + "/entity/*.js"
],
synchronize: true,
logging: false
}).then(connection => {
console.log("连接成功");
}).catch(error => {
console.error("连接出错:", error);
});
使用 Node.js 连接数据库有多种方式,我们可以使用 Node.js 原生模块连接,也可以使用 ORM 框架连接。在实际开发过程中,我们需要根据自己的项目需求选择合适的方式来连接数据库。