【问题标题】:Get nested data from Firestore Database in REACT JS从 REACT JS 中的 Firestore 数据库获取嵌套数据
【发布时间】:2021-01-18 16:38:30
【问题描述】:

我正在使用 reactJS 创建一个简单的社交媒体应用程序。这是我的数据库的架构:

--- posts (collection)
         |
         --- uid (documents)
              |
              --- userPosts (collection)
                    |
                    --- postId (documents)
                    |     |
                    |     --- title: "Post Title"
                    |     |
                    |     --- date: September 03, 2018 at 6:16:58 PM UTC+3
                    |
                    --- postId (documents)
                          |
                          --- title: "Post Title"

我希望使用 onSnapshot 方法实时刷新帖子。如何获取我所有的帖子? 我改变了我的数据库的结构,就像你看到的那样,我不知道如何获取嵌套的帖子。 当我所有的帖子都在“帖子”集合中时,我就是这样做的。

const [posts,setPosts]= useState([]);

useEffect(() => {
        db.collection('posts').onSnapshot(snapshot =>{
            setPosts(
                snapshot.docs.map(doc=>({
                  id: doc.id,
                  post : doc.data()
                })));
        })
     }, [])

【问题讨论】:

    标签: javascript reactjs firebase google-cloud-firestore


    【解决方案1】:

    您可以通过提供路径来访问嵌套帖子,如下所示:

    const [posts,setPosts]= useState([]);
    
    useEffect(() => {
            db.collection('posts').onSnapshot(snapshot =>{
               snapshot.docs.map(doc=>({
                 doc.collection('userPosts').onSnapshot(snapshot =>{
                   setPosts(
                     snapshot.docs.map(doc=>({
                       id: doc.id,
                       post : doc.data()
                   })));
                 });
               }));
            });
         }, []);
    

    【讨论】:

    • 但问题是它不是'uid',而是用户的uid。那里有许多不同的 uid,因为每个用户都可以发帖。
    • @dodododo97 如果你想要一个用户的所有帖子,你可以用用户的uid代替'uid'。如果您想要所有用户的所有帖子,请检查我刚刚更新的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 2021-02-24
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多