【问题标题】:Req Params Coming Back as UndefinedReq 参数以未定义的形式返回
【发布时间】:2021-11-17 14:21:53
【问题描述】:

所以我有一个带有模拟数据的 JSON 文件。我正在尝试创建一个模拟 API 服务器。我有一条可以正常工作的路线:

const express = require("express");
const router = express.Router();
const data = require('../data/customers.json')

router.get("/",  (req, res) => {
    try {
        res.json({
            customers: data
        }).status(200);
    } catch(error) {
        console.error("ERROR: ",error);
        return error;
    }
})

我希望下一个路由是 localhost/customers/:id,但由于某种原因,当我将以下路由作为 localhost/customers/2 进行测试时,以下路由无法读取 req 参数。但是,如果我为 2 分配一个测试变量并在 find 函数中使用它,它就可以工作。因此,我将其缩小到 req.params 的问题。这是路线(当然是在同一个文件中):

router.get("/:id", async (req, res) => {
    const { customer_id } = req.params;
    console.log('ID NUMBER', customer_id);
    try {
        const response = await data.find( customer => customer.id === customer_id);
        console.log(response)
        res.json(response).status(200);

    } catch(error) {
        console.error("ERROR: ",error);
        return error;
    }

})

如果它有帮助,这里是我的 app.js 的副本:

'use strict';

const http = require('http');

const host = "127.0.0.1";
const port = 3000;

const cors = require('cors');
const morgan = require('morgan');

const express = require('express');
const app = express();

app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(morgan('dev'));
app.use(cors());
app.use(express.static('public'));

const server = http.createServer(app);

server.listen(port, host, () => {
    console.log('Server has started.')
});

const rootController = require('./routes/index');
const customersController = require('./routes/customers');

app.use('/', rootController);
app.use('/customers', customersController);

【问题讨论】:

    标签: javascript node.js json express mockserver


    【解决方案1】:

    问题在于您的router.get。您将参数称为customer_id。您需要在 url router.get("/:id", async (req, res)... 中以与参数相同的名称引用它,因此您的 req.param{ id: '' }

    const { customer_id } = req.params; 替换为const { id } = req.params;

    【讨论】:

    • 啊,非常感谢!!不敢相信事情就这么简单。还必须将 id 转换为 int。
    猜你喜欢
    • 1970-01-01
    • 2014-07-28
    • 2019-04-10
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 2021-01-24
    • 1970-01-01
    相关资源
    最近更新 更多