繁体   English   中英

为什么异步 function 会在请求正文中传递一个空的 object ?

[英]Why would async function pass an empty object in request body?

我也在使用nuxt.js, mongoDB, express and bodyParser, too

所以这里的其他答案对我没有帮助,因为他们说有 bodyParser 会解决它

uploadPet function 应该收集表单数据,并将其作为发布请求发送到 api。 附加 formData 是成功的,我可以在控制台中检查,但是在 api.js 中,请求是一个空的 object。

新的.vue

async uploadPet() {
  let formData = new FormData();   

  for (let data in this.pet) {
    formData.append(data, this.pet[data]);
  }
  for (var p of formData) {
      console.log(p);
    }
  try {
    console.log('trying to make a post request: ' + formData)
    let response = await fetch("http://localhost:9000/api/pet/new", {
      method: "POST",
      body: formData
    });
    this.$router.push("/");
  } catch (e) {
    console.error(e);
  }
}

api.js :(现在请求正文没有数据)

    router.post('/pet/new', (req, res) => {
    console.log('posting!')
    console.log(req.body.name)
    Pet.create({
        name: req.body.name,
        description: req.body.description
    }, (err, pet) => {
            if (err) {
                console.log('CREATE error: ' + err);
                res.status(500).send('Error')
            } else {
                res.status(200).json(pet)
            }
        })
    })

index.js

    const express = require('express');
    const bodyParser = require('body-parser');
    const mongoose = require('mongoose') 
    const morgan = require('morgan');
    const api = require('./routes/api')
    const pets = require('./mock')
    const path = require('path');
    const app = express()

    app.use((req, res, next) => {
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested- 
           With, Content-Type, Accept");
        res.header("Access-Control-Allow-Methods", "GET, POST, PUT, 
            DELETE, OPTIONS");
        next();
    })
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));

我已经有关于行的 bodyparser 请不要推荐我

在 app.js 中使用此代码,因为您不解析 req.body

const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM