首页 > 解决方案 > 在 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>
  );

标签: node.jsreactjsexpresssequelize.js

解决方案


将您的值放入对象中并将它们发送到节点

  const register = () => {
      const payload = {
          username: usernameReg,
          email: emailReg,
          password: passwordReg}

    Axios.post("http://localhost:5001/signup", payload)

如果payloadreq 中不存在,请检查console.log(req)

    exports.postUser = (req, res, next) => {
        console.log(req.body.payload);
        const {username , email , password } = req.body.payload
    }

推荐阅读