数据库概述 #

一、数据库选择 #

1.1 数据库类型 #

类型 说明 代表
关系型 结构化数据,ACID事务 MySQL, PostgreSQL
文档型 灵活结构,JSON文档 MongoDB
键值型 高性能缓存 Redis
图型 关系密集数据 Neo4j

1.2 选择建议 #

场景 推荐数据库
传统业务系统 MySQL, PostgreSQL
快速原型开发 MongoDB
高并发缓存 Redis
社交网络 Neo4j
全文搜索 Elasticsearch

二、连接方式 #

2.1 原生驱动 #

直接使用数据库驱动:

javascript
const mysql = require('mysql2');
const mongoose = require('mongoose');
const { Pool } = require('pg');

2.2 ORM #

使用对象关系映射:

javascript
const Sequelize = require('sequelize');
const Prisma = require('@prisma/client');
const TypeORM = require('typeorm');

2.3 查询构建器 #

使用链式查询:

javascript
const Knex = require('knex');

三、连接管理 #

3.1 连接池 #

javascript
const pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'myapp',
    connectionLimit: 10
});

3.2 连接配置 #

javascript
const config = {
    development: {
        host: 'localhost',
        database: 'myapp_dev'
    },
    production: {
        host: process.env.DB_HOST,
        database: process.env.DB_NAME
    }
};

const env = process.env.NODE_ENV || 'development';
const dbConfig = config[env];

3.3 错误处理 #

javascript
const connectDB = async () => {
    try {
        await mongoose.connect(process.env.DATABASE_URL);
        console.log('数据库连接成功');
    } catch (error) {
        console.error('数据库连接失败:', error);
        process.exit(1);
    }
};

四、数据模型 #

4.1 Schema定义 #

javascript
const userSchema = new mongoose.Schema({
    name: { type: String, required: true },
    email: { type: String, required: true, unique: true },
    age: { type: Number, min: 0, max: 150 },
    createdAt: { type: Date, default: Date.now }
});

4.2 模型创建 #

javascript
const User = mongoose.model('User', userSchema);

4.3 关联关系 #

javascript
const postSchema = new mongoose.Schema({
    title: String,
    content: String,
    author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
});

五、CRUD操作 #

5.1 创建 #

javascript
const user = await User.create({ name, email });

5.2 查询 #

javascript
const users = await User.find();
const user = await User.findById(id);

5.3 更新 #

javascript
await User.findByIdAndUpdate(id, { name: '新名字' });

5.4 删除 #

javascript
await User.findByIdAndDelete(id);

六、最佳实践 #

6.1 环境变量 #

text
DATABASE_URL=mongodb://localhost:27017/myapp
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=password
DB_NAME=myapp

6.2 连接文件分离 #

config/database.js:

javascript
const mongoose = require('mongoose');

const connectDB = async () => {
    try {
        await mongoose.connect(process.env.DATABASE_URL);
        console.log('数据库连接成功');
    } catch (error) {
        console.error('数据库连接失败:', error);
        process.exit(1);
    }
};

module.exports = connectDB;

6.3 模型分离 #

models/User.js:

javascript
const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
    name: String,
    email: String
});

module.exports = mongoose.model('User', userSchema);

七、总结 #

数据库集成要点:

概念 说明
数据库选择 根据场景选择合适类型
连接方式 原生驱动/ORM/查询构建器
连接管理 连接池、错误处理
数据模型 Schema定义、关联关系

下一步,让我们深入学习MongoDB集成!

最后更新:2026-03-28