【问题标题】:error Uncaught (in promise) TypeError: Cannot read property 'recordset' of undefined错误未捕获(承诺中)类型错误:无法读取未定义的属性“记录集”
【发布时间】:2020-02-19 03:53:51
【问题描述】:

我试图使用我在节点中创建的 api 和 axios 库并挂钩 useEffect 来显示当前项目用户,但我收到错误 Uncaught (in promise) TypeError: Cannot read property 'recordset' of undefined,为什么? 接口

router.get('/api/users, async(req,res)=>{
    try {
        let results=await m.all();
        res.json(results)
    } catch (error) {
        console.log(error);
        res.sendStatus(500);
    }
});

数据

{
    "recordset": [
        [
            {
                "id":1,
                "Name":"Alissa",
                "Age": 45,
                "Adress": "Brooklyn 405",
                "Phone": "212-324-4153"
            },
            {
                "id":2,
                "Name":"Ellis",
                "Age": 23,
                "Adress": "Boston 955",
                "Phone": "212-324-4152"
            }

    ],
    "output": {},
    "rowsAffected": [
        2
    ]
}

使用 react hooks useEffect 和 axios 库调用我在 node js 中创建的 API 的功能

import React, { useState, useEffect } from 'react';
import  axios  from 'axios';
import { Link } from 'react-router-dom';


 function AllUsers(){
    const url='/api/users';
    const[user, setuser]= useState({recordset: [] });

    useEffect(()=>{
        const getUsers=async()=>{

                const response =await axios.get(url);
                setuser(response.user);

        }
        getUsers();
    },[]);
    return(
        <ul>
        {user.recordset.map(item=>(
            <li key={item.id}>
            <a href={item.url}>{item.Name}</a>
            </li>
        ))}
        </ul>
    )
 }

 export default AllUsers;

【问题讨论】:

  • 据我所知,真实数据将在axiosresponse. Try to use response.data.user`的data属性中。
  • @dqlgnoleht 现在抛出 TypeError 错误:无法读取未定义的属性“记录集”
  • 你能编辑你的帖子并添加回复吗?
  • @dqlgnoleht 你是对的,是放置数据但没有 .user
  • "recordset": [ [ &lt;---- delete this one,你有两个,应该删除一个

标签: node.js reactjs react-hooks recordset


【解决方案1】:

请尝试更改此行:

setuser(response.user);

到,

setuser(response);

您的响应数据似乎没有键为 user 的对象。

【讨论】:

    【解决方案2】:

    就是用了小伙伴说的axios的data属性

    import React, { useState, useEffect } from 'react';
    import  axios  from 'axios';
    import { Link } from 'react-router-dom';
    
    
     function AllUsers(){
        const url='/api/users';
        const[user, setuser]= useState({recordset: [] });
    
        useEffect(()=>{
            const getUsers=async()=>{
    
                    const response =await axios.get(url);
                    **setuser(response.data);**
    
            }
            getUsers();
        },[]);
        return(
            <ul>
            {user.recordset.map(item=>(
                <li key={item.id}>
                <a href={item.url}>{item.Name}</a>
                </li>
            ))}
            </ul>
        )
     }
    
     export default AllUsers;
    

    【讨论】:

      猜你喜欢
      • 2021-05-13
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 2018-10-29
      • 2020-12-15
      • 2017-08-12
      • 1970-01-01
      相关资源
      最近更新 更多