提问者:小点点

module.create不从输入中获取数据,req.body为空


我目前正在做一个项目,在输入mongo db输入数据时出现了问题:

app.js

const path = require('path');
const express = require('express');
const app = express();
const getAdminPannel = require('./routes/pannelRoute');
const getView = require('./routes/viewRoutes');

app.set('view engine', 'pug');
app.set('views',path.join(__dirname,'views'));
app.use(express.static(path.join(__dirname,'public')));


app.use(express.json());
app.use(express.urlencoded({extended:true}));


app.use('/api/v1/services',getAdminPannel);

//Views routes
app.use('/',getView);


module.exports = app;

routes文件夹PannelRoute.js

const express = require('express');
const pannelController = require('../controller/pannelController');
const router = express.Router();

router.route('/create-services')
      .post(pannelController.createPannelServices);

module.exports = router;

控制器文件夹盘控制器

exports.createPannelServices = async(req,res) =>{
    try{
        const createService = Service.create(req.body);
        console.log(req.body)
        res.status(201).json({
           length:createService.lengnth,
           status:"Success",
           data:{
               services:createService
           }
        });
    }catch(err){
        res.status(400).json({
            status:'Fail',
            message:'Invalid data request'
        });
    }
}

script.js文件,从输入sublit操作中获取数据:

import {createService} from './createService';

const createServices = document.querySelector('.createServiceForm');
if(createServices){
    createServices.addEventListener('submit',(el)=>{
          el.preventDefault();
        const form = new FormData();
        form.append('serviceName',document.getElementById('servicename_create').value);
        form.append('serviceDescription',document.getElementById('serviceDescription').value);
      
        
          createService(form)
    })
}

createService.js脚本文件,我在其中使用axios使用api链接inser数据。

import "regenerator-runtime/runtime";
import axios from 'axios';
import { showAlert } from './alert';

export const createService = async(data)=>{
    try{
        const create = await axios({
            method:'POST',
            url:'http://127.0.0.1:5000/api/v1/services/create-services',
            service:data
        });
        if(create.data.status === 'success'){
             showAlert('success','Servicul a fost creeat!!!');
             window.setTimeout(()=>{
                 location.assign('/');
             }, 1500);
         }
         console.log(data);
    }catch(err){
        showAlert('error','A aparut o problema in procesul de creeare a servicului!!!');
    }
    
}

问题是req.body不返回任何值,为空,并且还会出现错误


共1个答案

匿名用户

createService.js中,您不能正确地将数据传递给Axios。

您需要将其更改为:

const create = await axios({
  method:'POST',
  url:'http://127.0.0.1:5000/api/v1/services/create-services',
  data:data
});

后端的req.body对应于之前没有填充的data字段。