Javascript React-Firebase实现like函数
我在使用Firebase和React时遇到的问题是,我不知道如何实现一些功能,以防止用户两次投票,或者在我的情况下,多次单击like按钮 反应代码Javascript React-Firebase实现like函数,javascript,firebase,google-cloud-firestore,firebase-security,Javascript,Firebase,Google Cloud Firestore,Firebase Security,我在使用Firebase和React时遇到的问题是,我不知道如何实现一些功能,以防止用户两次投票,或者在我的情况下,多次单击like按钮 反应代码 const increment = firestore.FieldValue.increment(1); const likeButton = () => { firestore .collection('posts') .doc(slug) .update({ likes: incre
const increment = firestore.FieldValue.increment(1);
const likeButton = () => {
firestore
.collection('posts')
.doc(slug)
.update({
likes: increment
})
.then(() => {
firestore
.collection('users')
.doc(auth.uid)
.collection('likes')
.doc(post.slug)
.set({ liked: true })
})
}
Firebase规则
match /posts/{post} {
allow read;
allow write:
if isSignedIn()
&& request.resource.data.title is string
&& request.resource.data.title.size() >= 5
&& request.resource.data.title.size() < 150
&& request.resource.data.body is string
&& request.resource.data.coverImageURL != null;
allow update: if isSignedIn()
&& exists(/databases/$(database)/documents/users/$(request.auth.uid)/likes/$(post)).data.liked == false
&& (request.resource.data.likes == 1 || request.resource.data.likes == request.resource.data.likes + 1);
}
match /users/{userId}/likes/{post} {
allow update: if ifOwner(userId);
allow write: if ifOwner(userId);
}
匹配/posts/{post}{
允许读取;
允许写入:
如果isSignedIn()
&&request.resource.data.title是字符串
&&request.resource.data.title.size()>=5
&&request.resource.data.title.size()<150
&&request.resource.data.body是字符串
&&request.resource.data.coverImageURL!=null;
允许更新:如果为isSignedIn()
&&存在(/databases/$(database)/documents/users/$(request.auth.uid)/likes/$(post))。data.liked==false
&&(request.resource.data.likes==1 | | request.resource.data.likes==request.resource.data.likes+1);
}
匹配/users/{userId}/likes/{post}{
允许更新:如果为ifOwner(userId);
允许写入:如果为ifOwner(userId);
}
您应该尝试实现一种逻辑,如果like按钮已被单击,则禁用该按钮。谢谢您的评论,但您应该知道如何做到这一点吗?我不太确定。如果like按钮已经被点击,你应该尝试实现一个逻辑来禁用它。谢谢你的评论,但是你应该知道怎么做吗?我不太确定。