开发者问题收集

使用 Firebase 创建 Feed 时可能出现未处理的承诺拒绝

2021-01-26
1025

当我尝试根据用户关注的不同用户 ID 整理帖子提要时,我遇到了以下错误。

Possible Unhandled Promise Rejection (id: 0): TypeError: undefined is not an object (evaluating 'snapshot.query.EP.path')

我正在使用 redux & firebase/firestore,错误发生在以下操作的第 581343114 行

export function fetchUsersFollowingPosts(uid) {
    return ((dispatch, getState) => {
        firebase.firestore()
            .collection("posts")
            .doc(uid)
            .collection("userPosts")
            .orderBy("creation", "asc")
            .get()
            .then((snapshot) => {
                const uid = snapshot.query.EP.path.segments[1];
                const user = getState().usersState.users.find(el => el.uid === uid);
                let posts = snapshot.docs.map(doc => {
                    const data = doc.data();
                    const id = doc.id;
                    return { id, ...data, user }
                })

                for(let i = 0; i< posts.length; i++){
                    dispatch(fetchUsersFollowingLikes(uid, posts[i].id))
                }
                dispatch({ type: USERS_POSTS_STATE_CHANGE, posts, uid })

            })
    })
}

3个回答

是的,您正在做 simcoder instagram 克隆项目 非常感谢 henry 提供您的解决方案,最后我得到了问题的答案,请按照以下步骤解决问题

只需将此

dispatch(fetchUserFollowingPosts(user.id))

替换为此

dispatch(fetchUserFollowingPosts(user.uid))

只需将其替换为 user.uid

然后将此

const uid = snapshot. query.EP.path.segments[1]

替换为此

const uid = snapshot.docs[0].ref.path.split('/')[1]

它适用于😁 codenanshu

Anshu Meena
2021-07-20

在我的例子中,在错误行之前,只需输入 console.log(snapshot); 之后,我检查元素并发现我的查询是 我的查询屏幕截图 , 所以我的例子是 const uid = snap._delegate.query._query.path.segments 1 ; 也许每个人都会得到不同的路径,所以最好在开发者工具控制台中的检查元素中检查自己。

Terry Tan
2022-06-25

您也在做 simcoder insta 的事情吗?

我刚刚用:

dispatch(fetchUserFollowingPosts(user.uid))

替换了此:

dispatch(fetchUserFollowingPosts(user.id))

只需将其替换为 user.uid

henry blue throttle unedited
2021-04-22