"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.name
和 req.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。
我用于测试我的项目API Insomnia(像邮递员)程序,当我使用 GET 方法时一切顺利,但是 POST 方法 return 未定义 req.body.name
和 req.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。