"Cannot read property 'name' of undefined" POST JSON 失眠的方法

"Cannot read property 'name' of undefined" POST JSON method in Insomnia

我用于测试我的项目API Insomnia(像邮递员)程序,当我使用 GET 方法时一切顺利,但是 POST 方法 return 未定义 req.body.namereq.body.price, 这个 error 我抓住了,这是我的要求 query

这是我的app.js

const express = require('express');
const app = express();
const morgan = require('morgan');
const mongoose = require('mongoose');
require('dotenv').config()


mongoose.connect(`mongodb+srv://vadim:${process.env.MONGO_ATLAS_PS}@cluster0-abuqs.mongodb.net/shop`, {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

const productRoutes = require('./api/routes/

app.use(morgan('dev'));

app.use('/products', productRoutes);

module.exports = app;

这是我的 products.js

路由器
const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const Product = require('../models/product')

router.post("/", (req, res, next) => {
    console.log(JSON.stringify(req.body))
    const product = new Product({
        _id: new mongoose.Types.ObjectId(),
        name: req.body.name,
        price: req.body.price
    });
    product
        .save()
        .then(result => {
            console.log(result);
            res.status(201).json({
                message: "Handling POST requests to /products",
                createdProduct: result
            });
        })
        .catch(err => {
            console.log(err);
            res.status(500).json({
                error: err
            });
        });
});

和product.js的模型

const mongoose = require('mongoose');

const productSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    name: String,
    price: Number
});

module.exports = mongoose.model('Product', productSchema);

您需要使用 body-parser 来使用 express POST 方法捕获数据。

首先,您需要安装它:

npm install body-parser --save

然后在你的代码中:

const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const Product = require('../models/product');
const bodyParser = require('body-parser');

express.use(bodyParser.json());

express.post("/", (req, res, next) => {
    console.log(JSON.stringify(req.body))
    const product = new Product({
        _id: new mongoose.Types.ObjectId(),
        name: req.body.name,
        price: req.body.price
    });
    //The rest of your code
});

有关它的更多信息,read the package docs