簡體   English   中英

在顯示錯誤處理的錯誤消息后,后端正在將數據提交到數據庫。 [節點+快遞]

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM