Node-意见反馈模块
【摘要】 Node-意见反馈模块
意见反馈模块
接下来我们尝试写一个意见反馈模块,用户可以提交反馈,管理员可以查看和管理反馈。
1、创建数据库表
- 主要字段有:
- 反馈内容:feedcontent
- 反馈时间:createtime
- 反馈人:name
- 反馈人手机号:phone
- 反馈人用户名:username
- 反馈人id:userId
CREATE TABLE feedbacks (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
createtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
feedcontent TEXT,
phone VARCHAR(20),
username VARCHAR(100),
userId INT NOT NULL
);
2、引入接口路由
创建表以后,接下来就可以去新建对应文件和引入了
☞ app.js
// 用户反馈部分
const feedbackRoutes = require('./server/api/feedbackRoutes');
// 反馈接口
app.use('/api/feedback', feedbackRoutes);
3、新增接口
创建表和路由以后,接下来就可以去开发我们的接口了
☞ 新建 server => api => feedbackRoutes.js
之前我们封装好的公共方法直接引入
// 提交反馈的接口
app.post('/feedback', (req, res) => {
const { name, phone, feedcontent, username, userId } = req.body;
// 检查是否缺少必要字段
if (!name || !phone || !feedcontent || !username || !userId) {
return res.status(400).json({ message: 'Please provide all required fields' });
}
// 插入数据到 MySQL 数据库
const query = 'INSERT INTO feedbacks (name, phone, feedcontent, username, userId) VALUES (?, ?, ?, ?, ?)';
pool.query(query, [name, phone, feedcontent, username, userId], (err, result) => {
if (err) {
console.error(err);
return res.status(500).json({ message: 'Database error' });
}
res.status(200).json({ message: 'Feedback submitted successfully', id: result.insertId });
});
});
- 完善优化
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 feedbacks SET ?'; // 准备 SQL 插入语句
const { name, phone, username, describe, email, userId } = req.body;
// 检查是否缺少必要字段
if (!describe || !userId) {
res.send({
code: 400,
data: results,
message: '请填写必填信息!'
});
return
}
const postData = { name, phone, username, describe, email, userId };
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)