Post 在节点 js express 中不起作用

Posted

技术标签:

【中文标题】Post 在节点 js express 中不起作用【英文标题】:Post is not working in the node js express 【发布时间】:2021-11-27 19:31:54 【问题描述】:

当我尝试在应用程序中传递发布请求时,它不起作用。当我尝试使用邮递员发布数据时,数据没有传递,我得到以下值作为输出。

“_id”:“615f2fe2fc52303bdb758e93”,“saltSecret”: "$2a$10$AmJCbqiunWY2S8kVBbx.a.", "__v": 0

这些是我的代码。

app.js

require("./config/config");
require("./models/db");

const express = require("express");
const bodyParse = require("body-parser");
const cors = require("cors");

const rtsIndex = require("./route/index.router");

var app = express();

app.use(bodyParse.json());
app.use(cors());
app.use("/api", rtsIndex);

app.listen(process.env.PORT, () =>
    console.log(`Server started at port : $process.env.PORT`)
);

studentModel.js

const mongoose = require("mongoose");
const bcrypt = require("bcryptjs");

var studentScheme = new mongoose.Schema(
    fullname: 
        type: String,
    ,
    email: 
        type: String,
    ,
    password: 
        type: String,
    ,
    saltSecret: String,
);

studentScheme.pre("save", function (next) 
    bcrypt.genSalt(10, (err, salt) => 
        bcrypt.hash(this.password, salt, (err, hash) => 
            this.password = hash;
            this.saltSecret = salt;
            next();
        );
    );
);

mongoose.model("Student", studentScheme);

studentController.js

const mongoose = require("mongoose");    
const Student = mongoose.model("Student");

module.exports.resgiter = (req, res, next) => 
    var student = new Student();
    student.fullname = req.body.fullname;
    student.email = req.body.email;
    student.password = req.body.password;
    student.save((err, doc) => 
        if (!err) res.send(doc);
    );
;

router.js

const express = require("express");
const router = express.Router();    
const ctrlStudent = require("../controller/student.controller");

router.post("/register", ctrlStudent.resgiter);

module.exports = router;

请有人帮助我;我不明白我的代码有什么问题

【问题讨论】:

【参考方案1】:

大多数情况下,只要有一个承诺(不是 nodejs 中的确切承诺,只是我在这里使用的一个术语),它总是首选使用async - await,这样它就会返回。

所以通过使用async - await,我不知道你的数据是如何存储在你的数据库中的;但你可以试试下面的代码并检查它是否有效:

const mongoose = require("mongoose");
const Student = mongoose.model("Student");

module.exports.resgiter = async (req, res, next) => 
    var student = new Student(
        fullname: req.body.fullname,
        email: req.body.email,
        password: req.body.password,
    );

    await student.save((err, doc) => 
        if (!err) 
            console.log("Saving the document...")
            res.send(doc);
        
    );
;

async - await

可以参考以下链接

https://developer.mozilla.org/en-US/docs/Learn/javascript/Asynchronous/Async_await

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

https://hackernoon.com/6-reasons-why-javascripts-async-await-blows-promises-away-tutorial-c7ec10518dd9

https://nodejs.dev/learn/modern-asynchronous-javascript-with-async-and-await

【讨论】:

完美运行,非常感谢 如果有效,您也可以为答案投票.....谢谢

以上是关于Post 在节点 js express 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

NPM Pug 在我的 JS 应用程序中不起作用

为啥 GET 请求在 Node.js 中不起作用?

Axios.post 在反应 js 中不起作用

Firebase 存储在 Express 服务器环境中不起作用

Node.js + Express POST 请求返回未定义

Paypal 批量支付在节点 js api 中不起作用