node.js - Req.body 已填充,但 Req.body.user 和 Req.body.pass 未填充
问题描述
我正在从头开始进行身份验证。我在向我的 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' }
谢谢,本!
解决方案
bodyParser
不处理form-data
。为此,您将需要使用multer。
否则使用application/x-www-form-urlencoded
,因为您已经拥有:
app.use(bodyParser.urlencoded({ extended: true }));
在 Postman 中,不要使用form-data
收音机,而是使用收音机x-www-form-urlencoded
。
推荐阅读
- javascript - API 数据的初始加载缓慢
- html - CSS - 按钮边框渐变
- java - 我无法将导航抽屉项目与相关活动和 fregmant 连接起来
- javascript - 解析嵌套的字符串化 json 对象
- javascript - Safari 不会在验证时执行 Recaptcha
- php - 带有 php 和 apache 的基本 dockerfile 不会挂载
- python - 如何让我的 Django API 同时为多个用户工作?
- vb.net - 带有可选参数语法错误的事件的 AddHandler
- svg - 在 gatsby 中动态渲染 svg
- c++ - vcpkg:忽略包的内部版本(qt5-base)并使用外部版本?