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

MongoDB返回的对象数组调用map方法报is not a function错误如何解决

问题根因

你后端接口在返回数据时执行了getprint +'Succes!'字符串拼接操作,会自动将MongoDB查询返回的数组对象强制转换为字符串格式,导致前端拿到的res.data是字符串而非数组,字符串原型上没有map方法,因此触发报错。

修复方案

1. 后端接口调整

不要直接拼接数组和字符串,将数据和状态信息封装为对象返回:

router.get('/receipt/all', async (req, res) => {
    try {
        const getprint = await Prints.find()
        res.status(200).json({
            list: getprint,
            message: 'Success!'
        })
    } catch (error) {
        res.status(500).json({
            message: `Error fetching data!!! ${error}`
        })
    }
})

2. 前端取值逻辑调整

从返回的结构化对象中提取数组字段赋值:

const getOrder = async() =>{
    try {
        const res = await axios.get("/products/receipt/all")
        setPrintz(res.data.list)
    } catch (error) {
        console.log(error);
    }
}

3. 渲染逻辑优化

增加数组类型判断兜底,同时给列表元素添加唯一key属性避免React警告:

{Array.isArray(printz) && printz.map(x =>(                   
    <tbody key={x._id}>
        <tr>
            <td>{x.product}</td>
            <td>{x.price}</td>
        </tr>
    </tbody>
))}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:06:06