繁体   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