所以我有一個帶有模擬資料的 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);
uj5u.com熱心網友回復:
問題出在您的router.get. 您將引數稱為customer_id. 您需要在 url 中以與引數相同的名稱參考它,router.get("/:id", async (req, res)...因此您req.param是{ id: '' }.
替換const { customer_id } = req.params;為const { id } = req.params;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/358606.html
標籤:javascript 节点.js json 表达 模拟服务器
上一篇:在try/catch塊中功能完成之前的document.save()和res.redirect
下一篇:使用異步函式作為條件
