搜尋

首頁  >  問答  >  主體

Express JS MongoDB導致Postman發送請求卡住

當我沒有將res.status(200).json({message: "success", status: true}); 放在if 語句之外時,郵差卡在發送請求上

var express = require('express');
    var app = express();
    var bodyParser = require('body-parser');
    var multer = require('multer');
    var upload = multer();
    var cookieParser = require('cookie-parser');
    var mongoose = require('mongoose');
    app.set('view engine', 'pug');
    app.set('views', 'views');
    app.use(express.json());
    app.use(bodyParser.json( { extended: true} ));
    app.use(bodyParser.urlencoded({extended: true }));
    app.use(upload.array());
    app.use(cookieParser());

    mongoose.set('strictQuery', true);

    mongoose.connect('mongodb://127.0.0.1:27017/my_db',
    {
        useNewUrlParser: true,
        useUnifiedTopology: true
    },(err) => {
        if(err){
            
        }else{
            console.log("connected");
        }
    }
    );

    var userSchema = mongoose.Schema({
        username: {type: String, required: true, index: { unique: true }},
        password: {type: String, required: true}
    });


    var User = mongoose.model("User", userSchema);

    app.post('/signup', (req, res) => {
    
        var userInfo = req.query;

        if(!userInfo.username || !userInfo.password ){
            res.status("400");
            res.send("Invalid Details");
        }else {
            const newUser = new User({
                username: userInfo.username,
                password: userInfo.password
            });

            
            User.findOne({username: userInfo.username} , (err, response) => {
                if(response == null){
                    newUser.save().then( ()=> {
                        res.status(200).json({ message: 'Success!', status: true});
                        // res.status(200).end();
                    }).catch( error => {
                        res.status(400).json({message: err, status: false});
                        console.log("existing user");
                    });
                }
                //res.status(200).json({message: "success", status: true});
            });
        }
    });

    app.listen(3000);

如何停止“then”部分或catch上的程式碼,我想捕獲結果並將其顯示在前端。當我沒有放置 res.status(200).json({message: "success", status: true}); 時,郵差卡在發送請求上在 if 語句之外

P粉448130258P粉448130258234 天前378

全部回覆(1)我來回復

  • P粉101708623

    P粉1017086232024-03-31 09:40:33

    首先,您將 JSON 作為查詢參數傳遞給 API,這不是一個好主意。
    並且在程式碼中,您應該使用 else 語句來考慮並處理 corner 條件。

    else 語句沒有 if(response == null) 語句。並且也處理 err 條件。

    嘗試新增列印 userInfo.usernameuserInfo.password 並在此處新增螢幕截圖(如果問題未解決)。

    回覆
    0
  • 取消回覆