Heim  >  Fragen und Antworten  >  Hauptteil

Express JS MongoDB führt dazu, dass Postman beim Senden der Anfrage hängen bleibt

Wenn ich res.status(200).json({message: "success", status: true}); nicht außerhalb der if-Anweisung setze, bleibt Postman beim Senden der Anfrage hängen

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);

So stoppen Sie den Code im „Dann“-Teil oder fangen, ich möchte das Ergebnis erfassen und im Frontend anzeigen. Der Postbote bleibt beim Senden der Anfrage hängen, wenn ich res.status(200).json({message: "success", status: true}); nicht außerhalb der if-Anweisung

setze
P粉448130258P粉448130258186 Tage vor296

Antworte allen(1)Ich werde antworten

  • P粉101708623

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

    首先,您将 JSON 作为查询参数传递给 API,这不是一个好主意。
    并且在代码中,您应该使用 else 语句考虑并处理 corner 条件。

    else 语句没有 if(response == null) 语句。并且还处理 err 条件。

    尝试添加打印 userInfo.usernameuserInfo.password 并在此处添加屏幕截图(如果问题未解决)。

    Antwort
    0
  • StornierenAntwort