【问题标题】:Getting Error: Cannot read properties of undefined (reading 'map')出现错误:无法读取未定义的属性(读取“地图”)
【发布时间】:2021-12-10 07:08:12
【问题描述】:

我正在开发一个项目并使用 appwrite 数据库作为后端。我从我的集合中获取文档数组并在本地存储在 postItems 数组中。 这是获取文档列表的代码。我在 appwrite.js 文件中定义了 getData(),我正在导出它。

  getData: async () => {
    let promise = appwrite.database.listDocuments('61713e3e5257a');
    promise.then(function (response) {
        console.log(response.documents) //response.documents is a array
        return response.documents
    }, function (error) {
        console.log(error); // Failure
    });
},

然后是我导入的另一个文件dashboard.js,我正在调用它来使用useEffect设置数据。

const [postItems, setPostItems] = useState([])

useEffect(() => {
    const getPostData = async () => {
        try {
        
                const data = await api.getData()
                data.map((doc) => {
                    setPostItems(prevItems => [...prevItems, {
                        location: doc.location,
                        date: doc.date,
                        text: doc.experience
                    }])
                })

        } catch (error) {
            console.log(error.message);
        }
    }
    getPostData()
    console.log(postItems)
}, [])

我无法检索数据并将控制台错误显示为“无法读取未定义的属性(读取 'map')” 我无法理解出了什么问题,因为 getData() 函数正在返回 response.documents,它是一个数组,我正在使用它来设置 PostItems。如果有人能指出问题所在,那将非常有帮助。

【问题讨论】:

    标签: reactjs console


    【解决方案1】:

    问题来源是getData 函数。您忘记从函数返回数据。 添加return promise

    【讨论】:

    • 是的,感谢您指出这一点,我也不得不兑现承诺。这解决了问题
    【解决方案2】:

    你需要返回resolve看看下面的答案

    getData: async () => {
        let promise = appwrite.database.listDocuments('61713e3e5257a');
        promise.then(function (response) {
            resolve(response.documents);
            console.log(response.documents) //response.documents is a array
        }, function (error) {
            console.log(error); // Failure
        });
    },
    

    【讨论】:

    猜你喜欢
    • 2014-09-02
    • 2021-11-11
    • 1970-01-01
    • 2022-06-24
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    相关资源
    最近更新 更多