You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js+Express项目调用find()报错:products.find is not a function

解决Express中调用products.find()时报错“products.find is not a function”的问题

错误原因

你的products.json是一个包含products数组的顶层对象,但你解析后直接把整个对象赋值给了products变量。find()是数组专属方法,对象没有这个方法,因此触发报错。

修复方案

两种简单的修复方式任选其一:

方式1:解构赋值直接获取数组

修改JSON解析代码,通过解构取出内部的products数组:

import express from "express";
import fs from 'fs'
import bodyParser from "body-parser";

const app = express()
// 解构获取products数组
const { products } = JSON.parse(fs.readFileSync('products.json'))

app.get('/products', (req, res) => {
    res.json(products)
})
app.get('/products/:id', (req, res) => {
    const id = parseInt(req.params.id)
    const product = products.find(p => p.id === id)
    res.json(product)
})

方式2:调用对象内的数组属性

如果不想修改变量名,在调用find()时明确指定对象内的数组:

import express from "express";
import fs from 'fs'
import bodyParser from "body-parser";

const app = express()
const products = JSON.parse(fs.readFileSync('products.json'))

app.get('/products', (req, res) => {
    res.json(products.products)
})
app.get('/products/:id', (req, res) => {
    const id = parseInt(req.params.id)
    // 调用对象内的products数组的find方法
    const product = products.products.find(p => p.id === id)
    res.json(product)
})

额外提示

遇到这类数据类型不匹配的问题时,可先通过console.log(typeof products)打印变量类型,快速定位结构问题。

内容的提问来源于stack exchange,提问作者Jagannath Samantra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 06:23:13