📜  后端连接数据库 nodejs (1)

📅  最后修改于: 2023-12-03 14:50:40.970000             🧑  作者: Mango

后端连接数据库 Node.js

Node.js 是具有异步、非阻塞 I/O 模型的 JavaScript 运行时。它可以在服务器端运行,允许我们建立高性能、可伸缩性服务的关键。连接数据库是后端服务的一个很重要的组成部分。Node.js提供了多种连接数据库的方式。

使用 Node.js 原生模块连接数据库

Node.js 提供了原生的 mysqlpg 等模块,用于连接关系型数据库。在使用这些模块前,需要先下载并安装它们。

连接 MySQL

在 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 数据库。在连接成功后,我们打印出连接成功的信息,并且在断开连接的时候,打印出断开连接的信息。

连接 PostgreSQL

在 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 框架连接数据库

ORM (Object Relational Mapping) 是一种编程技术,可以将对象模型和关系模型映射起来。它可以使我们在编写后端应用程序时,大大简化操作数据库的过程。Node.js 有许多 ORM 框架可供选择,下面介绍两个比较常见的 ORM 框架。

Sequelize

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

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 框架连接。在实际开发过程中,我们需要根据自己的项目需求选择合适的方式来连接数据库。