【发布时间】:2021-05-27 14:16:56
【问题描述】:
我正在尝试学习 MEAN 堆栈,我只想执行 CURD 操作。但是当我将请求正文中的数据从角度发送到服务器时,我收到了一个空的请求正文。我不知道我哪里出错了。
这是我的代码
路线
router.post('/create-user', async (req, res) => {
console.log(req.body);
let { name, email, gender, mobile_no, password } = req.body;
try {
if (
!(name && email && gender && mobile_no && password && password.length > 8)
) {
throw new Error(
`All fields are required name: ${name} , email: ${email} , gender: ${gender} , MobileNo: ${mobile_no} .Password length must be greater then 8 character`
);
}
password = bcrypt.hashSync(password, parseInt(process.env.BCRYPT_SALT));
// let response = await USER.create({ name, email, gender, mobile_no });
const token = await jwt.sign(
{ name, email, mobile_no, user_id: response._id },
process.env.JWT_KEY
);
response = response.toObject();
response['token'] = token;
res.status(200).json({ err: 0, message: 'User Created', response });
} catch (error) {
res.status(404).json({ err: 1, message: error.message, error });
}
});
Index.js
const User = require('./Routes/user');
// Using middle ware
app.use(cors());
app.use(
express.urlencoded({
extended: true,
})
);
app.use(express.json());
app.use('/user', User);
app.listen(PORT, () => console.log(`App started on http://localhost:${PORT}`));
Package.JSON
{
"name": "backend",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon index.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"bcryptjs": "^2.4.3",
"cors": "^2.8.5",
"dotenv": "^9.0.2",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.12.9"
}
}
角度
create_user(data) {
return this.http.post(`${environment.BASE_URL}/user/create-user`, data, {
headers: { 'Content-Type': 'application/json' },
});
}
register_user() {
const data = this.register_form.getRawValue();
let aData = new FormData();
aData.append('name', data.name);
aData.append('email', data.email);
aData.append('password', data.password);
aData.append('image', this.image);
aData.append('gender', 'Male');
// this.store.dispatch(loading({ spinner: true }));
this.user_service.create_user(aData).subscribe(
(res) => {
console.log(res);
this.store.dispatch(loading({ spinner: false }));
},
(error) => console.log(error)
);
}
如果我在请求中设置了内容类型,则会收到错误消息。 这是将数据转换为 formdata 的正确方法吗?
http://localhost:4000/user/create-user 的 Http 失败响应:400 Bad Request
对不起,如果我犯了一些愚蠢的错误。我只是在学习
【问题讨论】:
-
在发送到服务器之前管理您的数据
标签: javascript node.js angular express mean-stack