Javascript 使用react native和firebase firestore计算喜欢的数量

Javascript 使用react native和firebase firestore计算喜欢的数量,javascript,firebase,react-native,google-cloud-firestore,react-redux,Javascript,Firebase,React Native,Google Cloud Firestore,React Redux,这是firestore的数据结构,我可以在其中存储喜欢它的用户的ID,但无法计算喜欢的总数 我试图计算并显示某个帖子的总喜欢次数,虽然我可以在帖子上存储互动,但我希望得到Insta或FB帖子的总喜欢次数 const onLikePress = (userId, postId) => { firebase.firestore() .collection("posts") .doc(userId)

这是firestore的数据结构,我可以在其中存储喜欢它的用户的ID,但无法计算喜欢的总数

我试图计算并显示某个帖子的总喜欢次数,虽然我可以在帖子上存储互动,但我希望得到Insta或FB帖子的总喜欢次数

 const onLikePress = (userId, postId) => {
        firebase.firestore()
            .collection("posts")
            .doc(userId)
            .collection("userPosts")
            .doc(postId)
            .collection("likes")
            .doc(firebase.auth().currentUser.uid)
            .set({})
    }

const onDislikePress = (userId, postId) => {
    firebase.firestore()
        .collection("posts")
        .doc(userId)
        .collection("userPosts")
        .doc(postId)
        .collection("likes")
        .doc(firebase.auth().currentUser.uid)
        .delete()
}

<View style={{flexDirection:"row" , justifyContent:"space-around" , marginTop:4}}>
                            { item.currentUserLike ?
                                (
                                    <TouchableNativeFeedback 
                                    onPress={() => onDislikePress(item.user.uid, item.id)}
                                    >
                                        <MaterialCommunityIcons name="heart" size={24} color="blue" />
                                    </TouchableNativeFeedback>
                                )
                                :
                                (
                                    <TouchableNativeFeedback 
                                    onPress={() => onLikePress(item.user.uid, item.id)} 
                                    >
                                        <MaterialCommunityIcons name="heart-outline" size={24} color="black" />
                                    </TouchableNativeFeedback>
                                  
                                )
                            }
                            <TouchableOpacity  onPress={() => props.navigation.navigate('Comment', { postId: item.id, uid: item.user.uid })}>
                                 <MaterialCommunityIcons name="comment-text-outline" size={24} color="black" />
                            </TouchableOpacity>
    
                                <TouchableOpacity onPress={ () => onShare (item.downloadURL)}>
                                     <MaterialCommunityIcons name="share-outline" size={24} color="black" />
                                </TouchableOpacity>
                            </View>
                            <Text>{item.likesCount}</Text>

                        </View>
const onLikePress=(userId,postId)=>{
firebase.firestore()
.收集(“员额”)
.doc(用户ID)
.collection(“用户帖子”)
.doc(posted)
.收藏(“喜欢”)
.doc(firebase.auth().currentUser.uid)
.set({})
}
const onDislikePress=(用户ID,postId)=>{
firebase.firestore()
.收集(“员额”)
.doc(用户ID)
.collection(“用户帖子”)
.doc(posted)
.收藏(“喜欢”)
.doc(firebase.auth().currentUser.uid)
1.删除()
}
{item.currentUserLike?
(
onDislikePress(item.user.uid,item.id)}
>
)
:
(
onLikePress(item.user.uid,item.id)}
>
)
}
导航('Comment',{postId:item.id,uid:item.user.uid})}>
onShare(item.downloadURL)}>
{item.likescont}

您可以使用
FieldValue.increment()
进行此操作。应用到代码中,您只需执行以下操作:

const onLikePress = (userId, postId) => {
    conts userPosts = firebase.firestore()
                              .collection("posts")
                              .doc(userId)
                              .collection("userPosts")
                              .doc(postId);
        
    userPosts.collection("likes")
             .doc(firebase.auth().currentUser.uid)
             .set({})
             .then(() => {
                 userPosts.update({
                     likesCont: firebase.firestore.FieldValue.increment(1)
                 });
             })
}

const onDislikePress = (userId, postId) => {
    conts userPosts = firebase.firestore()
                            .collection("posts")
                            .doc(userId)
                            .collection("userPosts")
                            .doc(postId);
        
    userPosts.collection("likes")
             .doc(firebase.auth().currentUser.uid)
             .delete()
             .then(() => {
                 userPosts.update({
                     likesCont: firebase.firestore.FieldValue.increment(-1)
                 });
             })
}

我想你忘了分享真实的Firestore结构,你能编辑你的帖子并添加结构吗?这将使您更容易检查您是如何存储喜欢和帖子的信息的。您好,我现在编辑了我的问题。您能看一下并帮助查找此问题的解决方案吗?谢谢