Reactjs 允许用户创建只有他们才能在Firebase中看到的元素(在React中)

Reactjs 允许用户创建只有他们才能在Firebase中看到的元素(在React中),reactjs,firebase-realtime-database,firebase-authentication,Reactjs,Firebase Realtime Database,Firebase Authentication,我最近开始学习firebase,我觉得它很棒。我能够让用户注册/登录电子邮件和密码,一旦他们在应用程序上,他们可以创建一些数据“卡”。但是,在我的应用程序上创建帐户的任何用户都可以查看、删除、编辑任何用户创建的任何卡 我的问题很简单,我怎么能只向创建卡片的用户严格显示卡片 以下是我目前的代码: useEffect(() => { const cardRef = firebase.database().ref('Cards') cardRef.on('value', (sna

我最近开始学习firebase,我觉得它很棒。我能够让用户注册/登录电子邮件和密码,一旦他们在应用程序上,他们可以创建一些数据“卡”。但是,在我的应用程序上创建帐户的任何用户都可以查看、删除、编辑任何用户创建的任何卡

我的问题很简单,我怎么能只向创建卡片的用户严格显示卡片

以下是我目前的代码:

useEffect(() => {
    const cardRef = firebase.database().ref('Cards')
    cardRef.on('value', (snapshot) => {
      const cards = snapshot.val()
      const cardslist = []
      for (let id in cards) {
        cardslist.push({id, ...cards[id] })
      }
      setCardslist(cardslist)
    })
  },[])

//in my jsx i then have cardslist which displays the cards
<div>{cardslist}</div>
useffect(()=>{
const cardRef=firebase.database().ref('Cards')
cardRef.on('值',(快照)=>{
const cards=snapshot.val()
const cardslist=[]
用于(让身份证进入){
cardslist.push({id,…cards[id]})
}
设置卡片列表(卡片列表)
})
},[])
//在我的jsx中,我有一个显示卡片的cardslist
{cardslist}

以下是您需要执行的操作:

1-确保每个“卡片”文档都有一个“创建者”字段,这样您就可以使用以下内容过滤查询

your_query().where("creator", "==", current_viewer_id)
2-确保使用Firestore规则,将卡上的读/写操作仅限于卡的创建者。您的用例是您将在Firestore规则文档和解释者视频中看到的第一个示例之一


祝你好运!您就快到了。

听起来您还没有尝试解决这个问题。我建议你这样做,并分享那些没有按照你期望的方式工作的代码。我的意思是我甚至不知道如何处理这个问题。非常感谢您的帮助。您需要将每张卡片与创建它的用户相关联,然后使用查询。请参阅有关排序和筛选数据的文档:谢谢,您的回答让它工作得很好!您的答案显示了CloudFireStore的查询语法,而OP使用的是实时数据库。虽然这两个数据库都是Firebase的一部分,但它们是完全独立的,并且具有用于查询数据的不同API。