簡體   English   中英

如何使用 node.js 向前端發送成功狀態碼?

[英]How do i send a success status code to the front end using node.js?

我最近開始使用 node.js 作為我的后端,並且我已成功將數據發布到數據庫,我現在面臨的問題是告訴前端數據已成功保存。 下面是我的用戶路線,所有我嘗試過的東西都被注釋掉了。

import { Router } from 'express';
import { IUser } from '../models/user.model';
const User = require('../models/user.model');
// import bcrypt from 'bcrypt';

const bcrypt = require('bcrypt');
const bodyParser = require('body-parser');

// create application/json parser
var jsonParser = bodyParser.json()

// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })

const userRouter = Router();

userRouter.get('/', (req, res) => {
    return res.json('This is the user route');
})

userRouter.post("/register", (req, res: any, next) => {


    const user: IUser = new User({

        email: res.email,
        firstName: res.firstName,
        lastName: res.lastName,
        password: res.password,
        displayName: res.displayName,
        cellNumber: res.cellNumber,
    });

    user.save()
        .then((result: any) => {

            res.status(201).json({
                message: 'Successfully created a new user!',
                result: result
            });
            // res.sendCode(201);
            // console.log(res);
            // res.status(201).send("User has been successfully created");
            //return 'User has been successfully created';

            // return Object({ message: "User has been successfully created" });

            // return res.status(201).send({
            //     message: "User has been successfully created",
            //     statusCode: 201
            // })

            // return res;

        })
        .catch((err: any) => {
            res.status(500).json({
                error: err
            })
        })


    // bcrypt.hash(req.body.password, 10)
    //     .then((hash: string) => {

    //         const user = new User({

    //             email: req.body.email,
    //             firstName: req.body.firstName,
    //             lastName: req.body.lastName,
    //             password: hash,
    //             displayName: req.body.displayName,
    //             cellNumber: req.body.cellNumber,
    //         });

    //         user.save()
    //             .then((res: any) => {

    //                 res.status(201).json({
    //                     message: 'Successfully created a new user!',
    //                     result: res
    //                 });

    //             })
    //             .catch((err: any) => {
    //                 debugger;
    //                 res.status(500).json({
    //                     error: Error
    //                 })
    //             })
    //     })

})

export default userRouter;

然后我將其導出到下面的 server.ts 文件

import express = require('express');
//import cors from 'cors';
const cors = require('cors');
const bodyParser = require('body-parser')
import { Router } from 'express';
import mongoose from "mongoose";
import "dotenv/config"

//routes
import userRouter from './routes/user.routes';

//Create a new express instance
const app: express.Application = express();

app.get('/', function (req, res) {

    res.send('Hello World');

});

// //get router
// var router = express.Router();

//Database
mongoose.connect(`${process.env.MONGO_URI}`,
    {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useCreateIndex: true,
    })
    .then(() => {
        console.log("Connected to MongoDB")
    })
    .catch(() => {
        console.log("Connection to Database has failed")
    })


var corsOptions = {
    origin: '*',
    credentials: true,
    methods: '*'
};



const routes = Router();

export default routes;

app.use(routes);

app.use(bodyParser.urlencoded({ extended: false }));

app.use(cors(corsOptions));

app.use("/user", userRouter);



routes.use('/user', userRouter);
routes.use(cors(corsOptions));

//use cors middleware
// router.use(cors(options));

app.listen(3000, function () {

    console.log('App is listening on port 3000!');

})

奇怪的是,當我設置斷點並分析 res 文件時,我可以看到我會從前端發布的數據。 但是前端得到的是 500 狀態代碼,而不是我想要發送的 201,即使它直接通過了該代碼。 我已經用谷歌搜索了我的鍵盤鍵三天了。 所以我現在很茫然。

最新的更改可以在https://gitlab.com/ShanahJr/SuperiorBallers下面的 GitLab 存儲庫中找到

您只需要使用express提供的res變量。 例子 -

module.exports.updateData = async (req, res, next) => {
    try {
        const data = await Editor.edit(req.body.query);

        res.status(200).json({ "status": true, "result": 'Edit successful!' })

    } catch (error) {
        console.log(error)
        res.status(200).json({ "status": false, "result": "Request Failed!" })
    }
}

此語句 - res.status(200).json({ "status": true, "result": 'Edit successful!' })

如今,express 還建議使用res.sendStatus(200)而不是res.status(200)

您可以在此處查找狀態代碼

使用res.status(201).send() , res.status().json通常會被 http 規則阻止,尤其是當您激活 https 時

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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