NoSQL数据库API接口开发实战指南
做后端开发这些年,见过太多项目一开始用MySQL撑着,数据一上量,写个API慢得像卡顿的视频。后来大家开始转向NoSQL,尤其是做用户行为记录、商品推荐、实时聊天这类场景,MongoDB、Redis、Cassandra这些名字就频繁冒头了。
但光会存数据不行,还得让前端、移动端能顺畅取到数据。这时候,API接口就成了关键桥梁。今天就聊聊怎么用Node.js搭一个基于MongoDB的简单API,过程不复杂,但很实用。
选型:为什么是MongoDB + Express?
MongoDB作为文档型数据库,结构灵活,适合快速迭代。Express轻量,配合Mongoose做模型管理,三者组合在中小型项目里很常见。比如你做个内容发布平台,文章字段时不时加个标签或封面图配置,用JSON直接存,比改表结构省事多了。
先装好基础依赖:
npm install express mongoose body-parser然后初始化Express服务:
const express = require('express');
const mongoose = require('mongoose');
const app = express();
app.use(body-parser.json());
mongoose.connect('mongodb://localhost:27017/blog', { useNewUrlParser: true, useUnifiedTopology: true });定义数据模型
假设我们要存文章,每篇有标题、内容、作者和发布时间。用Mongoose建个schema:
const articleSchema = new mongoose.Schema({
title: String,
content: String,
author: String,
createdAt: { type: Date, default: Date.now }
});
const Article = mongoose.model('Article', articleSchema);编写API接口
接下来写几个常用接口。获取所有文章:
app.get('/api/articles', async (req, res) => {
try {
const articles = await Article.find();
res.json(articles);
} catch (err) {
res.status(500).json({ error: err.message });
}
});新增一篇:
app.post('/api/articles', async (req, res) => {
const { title, content, author } = req.body;
const article = new Article({ title, content, author });
try {
await article.save();
res.status(201).json(article);
} catch (err) {
res.status(400).json({ error: err.message });
}
});启动服务:
app.listen(3000, () => {
console.log('API server running on port 3000');
});别忘了安全和性能
实际部署时,直接暴露MongoDB字段可能带来风险。比如用户接口返回了内部ID或更新时间,最好用select过滤或转换输出。另外,列表页记得加分页,不然前端一请求拉几万条,数据库直接喘不过气。
可以这样加个分页参数:
app.get('/api/articles', async (req, res) => {
const page = parseInt(req.query.page) || 1;
const limit = parseInt(req.query.limit) || 10;
const skip = (page - 1) * limit;
try {
const articles = await Article.find().skip(skip).limit(limit);
res.json(articles);
} catch (err) {
res.status(500).json({ error: err.message });
}
});再配上索引,按创建时间排序查得也快:
articleSchema.index({ createdAt: -1 });这套流程跑通后,换成Redis存会话数据、Cassandra处理时序日志,思路也是类似的——先把数据存住,再通过API标准化输出。关键是根据业务选对数据库,别硬套关系型那一套。
API不是写完就完事了,上线后还得监控响应时间、错误率。用个简单的日志中间件,记录每次请求耗时,哪天发现GET /api/articles突然变慢,就能及时排查是不是查询没走索引或者连接池满了。