【问题标题】:Post Request with axios giving error 400. u使用 axios 发布请求,给出错误 400.u
【发布时间】:2020-05-05 21:05:54
【问题描述】:

所以我是构建应用程序的新手并且一直在构建提交表单,但是我的发布请求给了我一个错误 400。我知道我的数据库已连接,因为我的 GET 请求工作正常,并且我知道我的 API 有点功能因为失眠POST 请求是否正常。这是我的 apply.js 页面代码。在控制台中,状态变化出现了,所以我认为信息传递得很好。我觉得这一定是我的帖子请求在某个地方做得不好。

function Apply() {
    const [applicant, setApplicant] = useState("");
    const [address, setAddress] = useState("");
    const [loanAmount, setLoanAmount] = useState(0);

  const handleChange = ({target})=> {
    if(target.name === "username") setApplicant(target.value);
    else if(target.name === "address") setAddress(target.value);
    else if(target.name === "loanAmount") setLoanAmount(target.value);
    else console.error("error changing Applicant");
  }
  const handleSubmit = (e) => {
    e.preventDefault() 
    console.log(applicant, loanAmount, address);

    axios
    .post('http://localhost:5000/users/add',{applicant, loanAmount, address}) 
    .then(res => console.log(res.data))
    .catch(err => console.log("Error of type: " + err))

我觉得我在做一些非常愚蠢或语法上很愚蠢的事情,但这里是 user.model,js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
    username: { type: String, required: true, unique: true, trim: true, minlength: 3},
    loanrequest: {type: Number, required: true, trim: true},
    address: {type: String, required: true, trim: true },
    email: {type: String, required: false, trim: true}
});

let users = mongoose.model('User', userSchema);

module.exports = users;

这是我使用 Users.js 中的模型的路线

const router = require('express').Router();
let User = require('../models/user.model');

router.get('/', (req,res) => {
    User.find(req.params.id)
    .then(users => res.json(users))
    .catch(err => res.status(400).json('Error: ' + err));
});

router.post('/add', (req, res) => {

    const username= req.body.username;
    const loanrequest= Number(req.body.loanrequest);
    const address= req.body.address;
    const email = req.body.address;
    const newUser = new User ({
        username,
        loanrequest,
        address,
        email
     });

        newUser.save()
        .then(() => res.json('Application Added!'))
        .catch(err => res.status(400).json('Error: ' + err));
    });

module.exports = router;

如果这篇文章太长,我很抱歉。我花了大约 2 天的时间试图弄清楚我做错了什么。感谢您的帮助!

【问题讨论】:

  • 以下答案对您有用吗?
  • 它没有。当我更改路线时,它给了我一个 404 错误而不是 400。

标签: reactjs post axios mern


【解决方案1】:

你有没有试过代替这段代码

const username= req.body.username;
const loanrequest= Number(req.body.loanrequest);
const address= req.body.address;
const email = req.body.address;
const newUser = new User({
    username,
    loanrequest,
    address,
    email
 });

下面的代码,我认为你不能像这样创建一个新文档,因为在上述情况下,架构将采用如下对象 {1: ..., 2: ...} 而不是所需的属性(用户名、电子邮件等...)

const userData = {
    username: req.body.username,
    loanrequest: Number(req.body.loanrequest),
    address: req.body.address,
    email: req.body.address
}
const newUser = new User(userData);

【讨论】:

  • 我尝试改用此代码,但它仍然给我同样的错误 400。我不太确定为什么,考虑到当我使用失眠症来测试 API 时,它似乎有效。
  • 嗯...可能是请求正文的格式之类的,很奇怪
猜你喜欢
  • 2020-11-19
  • 2021-03-31
  • 2018-08-03
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多