const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const logger = require('morgan');
// 创建Express应用
const app = express();
// 连接MongoDB数据库
mongoose.connect('mongodb://localhost:27017/my_database', { useNewUrlParser: true });
// 使用body-parser中间件解析请求体
app.use(bodyParser.json());
// 使用morgan记录请求日志
app.use(logger('combined'));
// 定义博客文章模型
const BlogSchema = new mongoose.Schema({
title: String,
author: String,
url: String,
likes: Number,
comments: Number,
user: {
type: mongoose.Types.ObjectId,
ref: 'User'
}
});
const Blog = mongoose.model('Blog', BlogSchema);
// 定义用户模型
const UserSchema = new mongoose.Schema({
name: String,
password: String
});
const User = mongoose.model('User', UserSchema);
// 创建新博客
app.post('/api/blogs', (req, res) => {
const blog = new Blog({
title: req.body.title,
author: req.body.author,
url: req.body.url,
likes: req.body.likes,
comments: req.body.comments,
user: req.body.user
});
blog.save().then(savedBlog => res.json(savedBlog));
});
// 获取所有博客
app.get('/api/blogs', (req, res) => {
Blog.find().then(blogs => res.json(blogs));
});
// 删除指定ID的博客
app.delete('/api/blogs/:id', (req, res) => {
Blog.findByIdAndRemove(req.params.id).then(() => res.json({ message: 'Blog deleted' }));
});
// 更新指定ID的博客
app.put('/api/blogs/:id', (req, res) => {
Blog.findByIdAndUpdate(req.params.id, req.body, { new: true }).then(updatedBlog => res.json(updatedBlog));
});
// 监听3000端口
app.listen(3000, () => {
console.log('Server running on port 3000');
});
这段代码实现了使用Express框架创建RESTful API的基本功能,包括对博客文章的增删查改操作。同时,使用了morgan记录请求日志,并且使用了Mongoose来操作MongoDB数据库。代码简洁,注重实现功能,方便理解和学习。