Node-帮助中心模块

举报
林太白 发表于 2025/01/17 13:29:19 2025/01/17
220 0 0
【摘要】 Node-帮助中心模块

帮助中心模块

接下来我们尝试写一个帮助中心模块,管理员可以提交修改反馈信息,用户可以查看进行参考。

1、创建数据库表

  • 主要字段有:

- id:主键,自增
  - title:标题
  - createtime:创建时间
  - content:内容

  • 表结构
CREATE TABLE help_articles (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    createtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    content TEXT NOT NULL
);

2、引入接口路由

创建表以后,接下来就可以去新建对应文件和引入了

☞ app.js

//引入帮助中心路由
const helpRoutes = require('./helpRoutes');
// 注册路由
app.use('/helparticles', helpRoutes);

3、新增接口

创建表和路由以后,接下来就可以去开发我们的接口了

☞ 新建 server => api => helpRoutes.js

之前我们封装好的公共方法直接引入

 const express = require('express');
const router = express.Router();
const connectionPool = require('../db'); // 引入数据库连接池模块
const { addCondition, addDateRangeCondition, addPagination } = require('./apimethods.js'); // 引入封装方法
// 新增 POST
router.post('/', (req, res) => {
    const insertSql = 'INSERT INTO help_articles SET ?'; // 准备 SQL 插入语句
    const { title,content} = req.body;
    // 检查是否缺少必要字段
    if (!title || !content) {
        res.send({
            code: 400,
            data: results,
            message: '请填写必填信息!'
        });
        return
    }
    const postData = { title,content };
    connectionPool.query(insertSql, postData, (error, results, fields) => {
        console.log(results, 'results');
        if (error) {
            res.send({
                code: 500,
                data: results,
                message: '添加失败!'
            });
            return;
        } else {
            res.send({
                code: 200,
                data: results,
                message: '添加成功!'
            });
        }
    });
});
  • 测试一下成功!
{code: 200,}
code: 200
data: {fieldCount: 0, affectedRows: 1, insertId: 1, serverStatus: 2, warningCount: 0, message: "",}
message: "添加成功!"

4、查询接口

接下来我们写一个查询接口,用于查询所有反馈信息,并且进行对应的分页

// 分页查询
router.get('/', (req, res) => {
    const { describe, name,phone,feedinformation,userId, pageNum, pageSize } = req.query;
    let query = `SELECT * FROM feedbacks`;
    // 构建查询条件
    const params = [];
    query = addCondition(query, params, 'userId', userId);
    query = addCondition(query, params, 'describe', describe);
    query = addCondition(query, params, 'name', name);
    query = addCondition(query, params, 'phone', phone);
    query = addPagination(query, params, pageNum, pageSize); //分页条件
   
    console.log('查询条件', query, params);
    // 查询数据库并返回数据
    connectionPool.query(query, params, (error, results) => {
        if (error) {
            res.send({
                code: 500,
                data: results,
                message: '查询失败!'
            });
            return;
        } else {
            let sqltotal = `SELECT COUNT(*) AS total FROM feedbacks;`
            // 查询数据库并返回数据
            connectionPool.query(sqltotal, (errtotal, rows) => {
                let total = rows[0]['total'];
                if (errtotal) {
                     res.send({
                        code: 401,
                        data: results,
                        message: '查询失败!'
                    });
                    return;
                } else {
                    res.send({
                        total: total,
                        code: 200,
                        data: results,
                        message: '查询成功!',
                    });
                }
            });
        }
    });
});
  • 测试一下我们的查询接口
{
    "total": 2,
    "code": 200,
    "data": [
        {
            "id": 1,
            "name": null,
            XXX
        },
        {
            "id": 2,
            "name": null,
            XXXX
        }
    ],
    "message": "查询成功!"
}

ok,没问题,我们添加的查询参数也非常ok

5、修改提交接口

接下来我们写一个修改提交接口,用于修改反馈信息,目的是为了让管理员提交反馈的信息

修改我们主要是为了核查是否添加了反馈的信息

// 更新接口
router.put('/', (req, res) => {
    const { name, phone, username, describe, userId, email,feedinformation, id } = req.body;
    // 确保 id 是有效的数字
    if (isNaN(id)) {
        return res.status(400).send({
            code: 400,
            message: '无效的 ID!'
        });
    }
    // 构建更新的字段(不包括 id)
    const updateValues = { name, phone, username, describe, userId, email,feedinformation };
    // 确保至少传递了要更新的字段
    if (!name || !phone ||!feedinformation ) {
        return res.status(400).send({
            code: 400,
            message: '缺少反馈信息!'
        });
    }
    // 执行数据库更新
    connectionPool.query('UPDATE feedbacks SET ? WHERE id = ?', [updateValues, id], (error, results, fields) => {
        if (error) {
            console.error('Database error:', error);
            return res.status(500).send({
                code: 500,
                message: '修改失败!',
                error: error.message || error
            });
        }
        // 如果没有记录被更新
        if (results.affectedRows === 0) {
            return res.status(404).send({
                code: 404,
                message: '没有找到对应的记录!'
            });
        }
        // 成功
        res.send({
            code: 200,
            message: '修改成功!',
            affectedRows: results.affectedRows
        });
    });
});

测试一下,ok,修改反馈信息完成

到这里我们的反馈信息模块就简单的完成了

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。