Flashcard集分享后非所有者无法渲染问题排查
共享Flashcard集链接后查看者无法获取卡片数据(Firestore查询返回空数组)
所有者可正常创建Flashcard集及卡片,但将相同URL链接分享给查看者后,查看者无法渲染卡片。查看者视角下,fetchFlashcards函数查询Firestore返回0条卡片数据,而所有者视角可正常获取5条;已多次确认Firebase权限无问题,尝试多种方案未解决,需排查原因。
代码实现
const fetchFlashcards = async (userId: any, setId: any) => { console.log("Fetching flashcards for set", setId, "of user", userId); try { console.log("Querying Firestore for flashcards..."); const flashcardsRef = collection( db, "users", userId, "flashcardSets", setId, "flashcards", ); const querySnapshot = await getDocs(query(flashcardsRef, orderBy("order"))); const fetchedFlashcards = querySnapshot.docs.map((doc) => ({ id: doc.id, ...(doc.data() as Flashcard), })); console.log("Fetched Flashcards:", fetchedFlashcards); setFlashcards(fetchedFlashcards); const flashcardSetRef = doc(db, "users", userId, "flashcardSets", setId); const flashcardSetSnapshot = await getDoc(flashcardSetRef); if (flashcardSetSnapshot.exists()) { const flashcardSetData = flashcardSetSnapshot.data() as FlashcardSet; console.log("Flashcard Set Data:", flashcardSetData); const currentUser = auth.currentUser; setIsOwner(flashcardSetData.ownerEmail === currentUser?.email); console.log( "Is Owner:", flashcardSetData.ownerEmail === currentUser?.email, ); } console.log(`Fetching flashcards for user: ${userId}, set: ${setId}`); } catch (error) { console.error("Error fetching flashcards:", error); } };
日志信息
查看者视角日志
Current User: UserImpl page.tsx:108 Authenticated User Email: exampleemail.com page.tsx:121 Current User: UserImpl page.tsx:61 Fetching flashcards for set 1sEOlBLmP4LEcoDoKoA8 of user DJIjfoP8Q1XbEXR4yKwywt16dso2 page.tsx:64 Querying Firestore for flashcards... page.tsx:81 Fetched Flashcards: Array(0) <---- 应返回5张卡片但实际为0 page.tsx:334 Fetched Flashcard Sets: Array(1) page.tsx:98 Fetching flashcards for user: DJIjfoP8Q1XbEXR4yKwywt16dso2(OWNER UID), set: 1sEOlBLmP4LEcoDoKoA8 (FLASHCARD SET OF THE OWNER UID)
所有者视角日志
Current User: UserImpl page.tsx:108 Authenticated User Email: owner@gmail.com page.tsx:121 Current User: UserImpl page.tsx:61 Fetching flashcards for set 1sEOlBLmP4LEcoDoKoA8 of user vlAgalDZy0TisZq887liWA7CmSj1 page.tsx:64 Querying Firestore for flashcards... page.tsx:81 Fetched Flashcards: Array(5) <---- 正常返回5张卡片 page.tsx:334 Fetched Flashcard Sets: Array(3) page.tsx:89 Flashcard Set Data: Object page.tsx:92 Is Owner: true page.tsx:98 Fetching flashcards for user: vlAgalDZy0TisZq887liWA7CmSj1, set: 1sEOlBLmP4LEcoDoKoA8
备注
已多次检查Firebase权限,确认无问题;尝试多种替代方案未解决,期望实现查看者可正常渲染所有者创建的Flashcard集。
内容的提问来源于stack exchange,提问作者Reptile
相关产品推荐
相关产品推荐

