Getting Error: Cannot read properties of undefined (reading 'map')

Getting Error: Cannot read properties of undefined (reading 'map')

我正在做一个项目并在后端使用 appwrite 数据库。我正在从我的集合中获取文档数组并在本地存储在 postItems 数组中。 这是用于获取 documents.I 列表的代码,已在文件 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。如果有人能指出错误之处,那将非常有帮助。

问题来源是getData函数。您忘记了 return 函数中的数据。 添加 return promise

您需要return解决参见下面的答案

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
    });
},