簡體   English   中英

Req 參數以未定義的形式返回

[英]Req Params Coming Back as Undefined

所以我有一個帶有模擬數據的 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 function 中使用它,它就可以工作。 因此,我將其縮小到 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);

問題出在您的router.get中。 您將參數稱為customer_id 您需要以與req.param router.get("/:id { id: '' } router.get("/:id", async (req, res)...

替換const { customer_id } = req.params; with const { id } = req.params;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM