Express接口案例——完成文章增删改查接口

一、创建文章的Model

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

var mongoose = require('mongoose')
const baseModel = require('./base-model.js')
const Schema = mongoose.Schema

const articleSchema = new mongoose.Schema({
    
    
    title: {
    
    
        type: String,
        required: true
    },
    description: {
    
    
        type: String,
        required: true
    },
    // 文章内容
    body: {
    
    
        type: String,
        required: true
    },
    // 文章标签
    tagList: {
    
    
        type: [String],
        default: null
    },
    // 点赞数量
    favoritesCount: {
    
    
        type: Number,
        default: 0
    },
    // 文章作者信息
    author: {
    
    
        type: Schema.Types.ObjectId,
        ref: 'User'
    },
    ...baseModel
})

module.exports = articleSchema

二、数据验证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、完成创建文章接口

在这里插入图片描述
在这里插入图片描述

// 创建文章
exports.createArticle =  async (req, res, next) => {
    
    
    try {
    
    
        // 处理请求
        const article = new Article(req.body.article)
        await article.save()
        res.status(201).json({
    
    
            article: article
        })
    } catch (err) {
    
    
        next(err)
    }
}

创建成功返回结果为:
在这里插入图片描述
在这里插入图片描述

四、完成获取文章接口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、查询文章列表

在这里插入图片描述
在这里插入图片描述

// 获取文章列表
exports.getArticles =  async (req, res, next) => {
    
    
    try {
    
    
        // 处理请求
        const {
    
     limit = 20, offset = 0, tag, author } = req.query
        const filter = {
    
    }
        if(tag) {
    
    
            filter.tagList = tag
        }
        if(author) {
    
    
            const user = await User.findOne({
    
     username: author })
            filter.author = user ? user._id : null
        }
        const article = await Article.find(filter)
        .skip(Number.parseInt(offset)) // 跳过多少条
        .limit(Number.parseInt(limit)) // 取多少条
        .sort({
    
    
            // -1降序, 1 升序
            createdAt: -1
        })
        const articlesCount = await Article.countDocuments()
        res.status(200).json({
    
    
            article: article,
            articlesCount: articlesCount
        })
    } catch (err) {
    
    
        next(err)
    }
}

六、更新文章

6.1 封装验证ID是否有效的函数

https://express-validator.github.io/docs/check-api.html#buildcheckfunctionlocations
在这里插入图片描述

在这里插入图片描述
修正上图存在的错误:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、删除文章

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44827418/article/details/119379990
今日推荐