【问题标题】:Req.body IS Populated, But Req.body.user and Req.body.pass isn'tReq.body 已填充,但 Req.body.user 和 Req.body.pass 未填充
【发布时间】:2019-07-31 17:03:44
【问题描述】:

我正在从头开始进行身份验证。我在向我的 api 运行发布请求时遇到了问题。如果我使用邮递员并填充表单数据部分并发布,则 req.body.user 和 req.body.pass 中没有任何内容。但是,当然,req.body 已填充,我可以看到我发送的表单数据。这是我的代码:

const express = require("express"),
  app = express(),
  shajs = require("sha.js"),
  bodyParser = require("body-parser"),
  mongoose = require("mongoose"),
  Schema = mongoose.Schema;

mongoose.connect('mongodb://localhost:27017/auth', {useNewUrlParser: true});

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

let userSchema = new Schema({
  username: String,
  password: String
});

let user = mongoose.model("user",userSchema);

app.post("/user/register",(req,res)=>{
  console.log(req.body);
  let hashedPass = shajs("sha256").update(req.body.pass).digest("hex");
  let newUser = new user({
    username: req.body.user,
    password: hashedPass
  });
});

app.listen(3000,(err,suc)=>{
  if(err){
    console.log(err);
  } else {
    console.log("Yay! The app is up on localhost:3000.");
  }
});

这是我的 req.body 的样子:

 { '------WebKitFormBoundaryBZtUrMPzNKlsGLwj\r\nContent-Disposition: form-data; name':
   '"user"\r\n\r\nBlakskyben\r\n------WebKitFormBoundaryBZtUrMPzNKlsGLwj\r\nContent-Disposition: form-data; name="pass"\r\n\r\nBENNNN\r\n------WebKitFormBoundaryBZtUrMPzNKlsGLwj--\r\n' }

谢谢,本!

【问题讨论】:

    标签: node.js api express post body-parser


    【解决方案1】:

    bodyParser 不处理 form-data。为此,您需要使用 multer

    否则使用application/x-www-form-urlencoded,因为您已经拥有:

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

    在 Postman 中,不要使用 form-data 收音机,而是使用 x-www-form-urlencoded 收音机。

    【讨论】:

      猜你喜欢
      • 2019-02-10
      • 2020-10-02
      • 2017-11-24
      • 1970-01-01
      • 2019-06-23
      • 2021-05-06
      • 2021-02-28
      • 1970-01-01
      • 2016-07-11
      相关资源
      最近更新 更多