Javascript 使用react native和firebase firestore计算喜欢的数量
这是firestore的数据结构,我可以在其中存储喜欢它的用户的ID,但无法计算喜欢的总数 我试图计算并显示某个帖子的总喜欢次数,虽然我可以在帖子上存储互动,但我希望得到Insta或FB帖子的总喜欢次数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)
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结构,你能编辑你的帖子并添加结构吗?这将使您更容易检查您是如何存储喜欢和帖子的信息的。您好,我现在编辑了我的问题。您能看一下并帮助查找此问题的解决方案吗?谢谢