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
});
},
我正在做一个项目并在后端使用 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
});
},