Node.js res.json似乎没有在nodejs中显示json数据
目前,我正在基于本地ads.js文件创建API 主API/API/ads中的res.json显示了所有ads json,但第二个API/API/ads/:id中的res.json似乎没有显示任何内容 我正在使用nodemon运行服务器 代码如下:Node.js res.json似乎没有在nodejs中显示json数据,node.js,json,express,Node.js,Json,Express,目前,我正在基于本地ads.js文件创建API 主API/API/ads中的res.json显示了所有ads json,但第二个API/API/ads/:id中的res.json似乎没有显示任何内容 我正在使用nodemon运行服务器 代码如下: import express from 'express' import dotenv from 'dotenv' import ads from './data/ads.js' dotenv.config() const app = expres
import express from 'express'
import dotenv from 'dotenv'
import ads from './data/ads.js'
dotenv.config()
const app = express()
app.get('/', (req, res) => {
res.send('API is running...')
})
app.get('/api/ads', (req, res) => {
res.json(ads) // Works Fine
})
app.get('/api/ads/:id', (req, res) => {
const ad = ads.find((a) => a._id === req.params.id) // Is the problem here?
res.json(ad) // Does not show anything
})
const PORT = process.env.PORT || 5000
const MODE = process.env.NODE_ENV
app.listen(PORT, console.log(`Server running in ${MODE} mode on port ${PORT}`))
以下是ads.js文件:
const ads = [
{
_id: 1,
img: '/images/feat.webp',
title: 'Hyundai Tuscon CRDi 2017',
price: 3000000
},
{
_id: 2,
img: '/images/innova.jpg',
title: 'Toyota Innova Crysta 2019',
price: 1200000
}
]
export default ads
文件夹结构为:
backend
|--data
|----ads.js
|--server.js
frontend
*more files*
package.json
req.params将保存一个键值对对象,其中值始终为字符串。这意味着您正在使用===将数字类型与字符串进行比较,这将明显返回false,并将导致一个空的ad数组
您可以尝试将参数id转换为数字,然后比较值,或者使用松散比较运算符==而不是===,尽管我不建议这样做:
app.get('/api/ads/:id', (req, res) => {
const ad = ads.find((a) => a._id === Number.parseInt(req.params.id))
res.json(ad)
})
现在我知道了一些新情况,谢谢你