You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 15:22:45