从Firestore拉取数据时recommends返回空数组,疑useEffect写法有误
解决Firestore获取推荐电影数据返回空数组的问题
- 核对Firestore查询的字段与值:确保查询的字段是
type、匹配值为recommend,注意Firestore字段名和值区分大小写,数据库里的字段或值大小写不匹配会直接导致查询不到数据。 - 检查
useEffect的依赖数组:如果依赖数组为空[],查询逻辑只会在组件首次挂载时执行一次;若需要在特定状态变化时重新查询,要把对应状态变量加入依赖数组,避免因依赖缺失导致查询不触发。 - 规范异步请求的处理逻辑:用
async/await写查询逻辑时,要在useEffect回调里包裹自执行异步函数,示例代码:useEffect(() => { const fetchRecommends = async () => { const querySnapshot = await db.collection('movies').where('type', '==', 'recommend').get(); const movieList = querySnapshot.docs.map(doc => doc.data()); setRecommends(movieList); }; fetchRecommends(); }, []); - 验证Firestore文档权限:临时将Firestore规则设置为
allow read, write: if true;(仅测试用,上线后需修改为安全规则),排查是否是权限限制导致无法读取数据。 - 确认数据库中存在目标数据:直接在Firestore控制台查看
movies集合,确认存在type字段值为recommend的文档,避免因集合本身为空返回空数组。
内容的提问来源于stack exchange,提问作者Connor Ellis
相关产品推荐
相关产品推荐

