Отправка запроса с ax ios дает ошибку 400. u - PullRequest
0 голосов
/ 06 мая 2020

, поэтому я новичок в создании приложений и создаю форму отправки, но мой почтовый запрос выдает ошибку 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 дней, просто пытаясь понять, что я делал не так. спасибо за любую помощь!

1 Ответ

0 голосов
/ 06 мая 2020

пробовали ли вы вместо этого кода

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: ...} вместо требуемых свойств (имя пользователя, адрес электронной почты и т. Д. c ...)

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