【发布时间】:2021-09-10 04:51:37
【问题描述】:
问题是它在另一个项目中运行良好,但在这个项目中却不是。我已经尝试添加所有可能的标题,但都在静脉中。
架构:
const mongoose = require('mongoose');
const products = new mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
name: String,
price: Number,
manufacturer: String
});
const Product = mongoose.model('Products', products);
module.exports = Product;
发布请求:
router.post('/api/products/', (req, res, next) => {
const product = new Product({
name: req.body.name,
price: req.body.price,
manufacturer: req.body.manufacturer
});
product
.save()
.then(result => {
console.log(result);
res.status(200).json({ message: result });
})
.catch(error => {
res.status(500).json({ error: error });
})
next();
});
标题:
const express = require('express');
const router = express.Router();
const app = express();
const Product = require('../Models/products');
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
即使有所有可能的标题,name 也是undefined。
附上截图。
也许邮递员痴迷于外行。
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const morgan = require('morgan')
const orders = require('./Routes/products');
app.use(orders);
app.use(morgan('dev'));
const port = process.env.port || 3000;
app.listen(port, () => {
console.log("Connected ");
})
mongoose
.connect("mongodb://localhost:27017", {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => console.log("Connected to Compass"))
.catch((err) => console.error("error found...", err));
app.use((req, res, next) => {
const error = new Error('Address Not Found');
error.status = 404;
next(error);
})
【问题讨论】:
-
在将请求主体传递给
Product之前,您是否尝试过记录请求主体?检查您的发布请求是否有效。检查正文是否包含名称变量? -
请求正常,但正文未定义。
-
为什么将extended设置为false?它有助于使用 QS 进行解析并且可以正常工作。
-
它不工作。
-
@Sarah 很难确定根本原因(其中可能有几个),因为您没有包含一些重要的点,例如来自 POSTMAN 的示例请求(以其原始形式)和路由配置(它发生在哪里?)。要么您的请求无效,要么您的路由在中间件之前被连接,这是一个相当普遍的问题。
标签: node.js postman body-parser