数据库概述 #
一、数据库选择 #
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