node.js - 在 node.js 中从我的前端发布到服务器端并做出反应和续集时出现 null 冲突错误
问题描述
我正在尝试将我的前端注册页面与我的后端链接,但我收到了这个 null 违规错误:
ValidationErrorItem { message: 'user.username cannot be null',
type: 'notNull Violation', path: 'username', value: null, origin: 'CORE', instance: [user], validatorKey: 'is_null', validatorName:空,验证器参数:[] },
我确保我正在存储和发送我得到的值,但它仍然引发空错误这是我发布用户的控制器:
const User = require("../models/user");
exports.postUser = (req, res, next) => {
const username = req.body.username;
const email = req.body.email;
const password = req.body.password;
const user = User.build({
username: username,
email: email,
password: password,
});
user
.save()
.then((result) => {
console.log(result);
})
.catch((err) => {
console.log(err);
});
};
这是我的路线:
const express = require("express");
const authController = require("../controllers/authentication");
const router = express.Router();
router.post("/signup", authController.postUser);
这是来自前端的代码
const [usernameReg, setUsernameReg] = useState("");
const [passwordReg, setPasswordReg] = useState("");
const [emailReg, setEmailReg] = useState("");
const register = () => {
Axios.post("http://localhost:5001/signup", {
username: usernameReg,
email: emailReg,
password: passwordReg,
})
.then()
.catch((err) => {
console.log(err);
});
};
return (
<Grid container direction="row">
<Grid item container direction="column" justify="center" lg={4} xl={3}>
<Grid item>
<Grid container direction="column">
<Grid item>
<img src={Logo} className={classes.logo} alt="mahmool logo" />
</Grid>
<Grid item>
<Typography variant="h2">Sign up</Typography>
</Grid>
<Grid item>
<TextField
label="Username"
id="username"
onChange={(event) => setUsernameReg(event.target.value)}
/>
</Grid>
<Grid item>
<TextField
label="Email"
id="email"
onChange={(event) => setEmailReg(event.target.value)}
/>
</Grid>
<Grid item>
<TextField
type="password"
label="Password"
id="password"
onChange={(event) => setPasswordReg(event.target.value)}
/>
</Grid>
<Grid item>
<Button
variant="contained"
color="secondary"
className={classes.spacing}
onClick={register}
>
Signup
</Button>
</Grid>
</Grid>
</Grid>
</Grid>
<Grid container className={classes.carStyle} lg={8}>
<img src={Car} className={classes.carStyle} alt="mahmool car" />
</Grid>
</Grid>
);
解决方案
将您的值放入对象中并将它们发送到节点
const register = () => {
const payload = {
username: usernameReg,
email: emailReg,
password: passwordReg}
Axios.post("http://localhost:5001/signup", payload)
如果payload
req 中不存在,请检查console.log(req)
exports.postUser = (req, res, next) => {
console.log(req.body.payload);
const {username , email , password } = req.body.payload
}
推荐阅读
- xamarin - 我想从一个页面导航到另一个页面
- c++ - 关系运算符重载在 C++ 中不起作用
- javascript - 在 FormBuilder 上将 TinyMCE 版本升级到 5 的问题
- javascript - 存储 MSAL 登录用户并在对 node.js Web 应用程序发出请求之前对其进行预检查
- spring-boot - 来自触发器的异常映射 - spring-boot 2.4.x + jOOQ
- javascript - 如何显示 Wifi 列表 Promise 值 React Native
- mysql - 为什么我已经添加了两行,MySql 会抛出错误 1242?
- java - 将单引号(')替换为整个 XML 文件中的双引号的 JAVA 代码片段
- swift - didSelectRowAt 中的长按操作
- java - Java Micronaut - 在我多次点击端点后抛出“javax.net.ssl.SSLHandshakeException”