[英]Backend is submitting data to database after displaying error message from error handling. [Nodejs + Express]
我正在为我的后端使用 nodejs 和 express。 当我在 postman 中的 1 个必需的输入列上测试我的错误处理时,它显示了我想看到的正确的错误处理消息,但它正在将数据提交到我的数据库(mysql 工作台)。
它应该在显示错误消息后停止,而不是继续将数据发布到我的数据库中。 我的正则表达式正在检查此列“乘数”以查看输入值是否仅 = 1-100。
如果任何乘数是 1-100,则返回成功,否则如果乘数与我的正则表达式不匹配,则返回 400 消息:“仅从 1 到 100 的数字”,否则返回 res.status(500).send({ 消息:“内部服务器错误” });
另外,如果可能,我可以将自定义正则表达式添加到 eventName、eventDesc 等的其他输入值吗? 如果是,我应该如何修改代码?
提前谢谢你,这是我的代码。
const express = require("express");
const router = express.Router();
router.post("/submitEvent", (req, res, next) => {
var {eventName,topicId,eventDesc,multiplierType,multiplier,eventStart,eventEnd,status} = req.body;
var pattern = /(^[1-9][0-9]?$|^100$)/; //regular expression allow number from 1 to 100 only
eventsDB.createEvent(eventName,topicId,eventDesc,multiplierType,multiplier,eventStart,eventEnd,status, (err, results) => {
if (err) {
return res.status(500).send({ message: "Internal Server Error" });
}
else if (pattern.test(multiplier) === false) {
return res.status(400).send({ message: "Number from 1 to 100 only" });
}
else if (pattern.test(multiplier) === true) {
return res.status(200).send({ message: "Success" });
}
// return res.status(200).json(results);
}
);
}
);
module.exports = router;
const db = require('../config/databaseConfig');
const eventsDB = {};
eventsDB.createEvent = (eventName, topicId, eventDesc, multiplierType, multiplier, eventStart, eventEnd, stat, callback) => {
var dbConn = db.getConnection();
dbConn.connect(function (err) {
if (err) {
return callback(err, null);
}
const query = "INSERT INTO practiceme.events (eventName, topicId, eventDesc, multiplierType, multiplier, eventStart, eventEnd, status) values (?,?,?,?,?,?,?,?)";
dbConn.query(query, [eventName, topicId, eventDesc, multiplierType, multiplier, eventStart, eventEnd, stat], (err, results) => {
dbConn.end();
if (err) {
console.log(err);
return callback(err, null);
} else {
return callback(null, results);
}
});
});
// return callback(null, true);
};
module.exports = eventsDB;
当您验证multiplier
时,您已经在数据库中插入了一条记录。 在调用eventsDB.createEvent()
之前进行检查
const pattern = /(^[1-9][0-9]?$|^100$)/; //regular expression allow number from 1 to 100 only
router.post("/submitEvent", (req, res, next) => {
const {
eventName,
topicId,
eventDesc,
multiplierType,
multiplier,
eventStart,
eventEnd,
status,
} = req.body;
if (!pattern.test(multiplier)) {
return res.status(400).send({ message: "Number from 1 to 100 only" });
}
eventsDB.createEvent(
eventName,
topicId,
eventDesc,
multiplierType,
multiplier,
eventStart,
eventEnd,
status,
(err, results) => {
if (err) {
return res.status(500).send({ message: "Internal Server Error" });
}
return res.status(200).send({ message: "Success" });
}
);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.