[英]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.