Firestore onSnapshot初始仅返回1个缓存文档,后续才返回全部结果的问题求助
Firestore onSnapshot初始仅返回1个缓存文档,后续才返回全部结果的问题求助
各位大佬好,我最近遇到了一个特别头疼的Firestore问题,想请教下大家怎么解决:
我用onSnapshot监听tripquotations集合的全量查询,这个集合里实际有137个文档,但每次初始化订阅的时候,onSnapshot的回调函数第一次只会返回1个文档,要等个几秒才会再次触发回调,返回完整的137个结果。
这就导致用户打开页面的时候,一开始看到的是只有1条数据的列表,很容易误以为其他文档都被删除了,体验特别糟糕。我觉得Firestore要么应该从缓存里返回全量的文档,要么如果缓存里没有全量的,就等服务器数据拿到之后再触发回调,而不是先返回不完整的结果。
下面是我写的代码,是在React的useEffect里实现的订阅逻辑:
useEffect(() => { const processSnapshot = function (snapshot: QuerySnapshot) { console.log(`Retrieved ${snapshot.docs.length} docs from firestore collection 'tripquotations'`); console.log('snapshot', snapshot); // ... 这里是把快照转成列表的逻辑 ... setQuotations(list); }; const q = query(collection(db, 'tripquotations')); const unsubscribe = onSnapshot(q, processSnapshot, (err) => setDbError('Getting trip quotation list', err)); return unsubscribe; }, [db, setDbError]);
有没有办法让onSnapshot要么直接返回全量结果(不管是缓存还是服务器的),要么就等全量数据到了再更新页面?麻烦各位帮忙看看,谢谢啦!
内容来源于stack exchange
相关产品推荐
相关产品推荐

