【问题标题】:Name is undefined. Post Request Nodejs名称未定义。发布请求 Nodejs
【发布时间】: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


【解决方案1】:

您需要将extended 属性设置为true

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

【讨论】:

    猜你喜欢
    • 2021-01-28
    • 2017-05-20
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    相关资源
    最近更新 更多