Reactjs 如果Firebase中存在,则进行本机反应

Reactjs 如果Firebase中存在,则进行本机反应,reactjs,firebase,if-statement,firebase-realtime-database,native,Reactjs,Firebase,If Statement,Firebase Realtime Database,Native,我的firebase结构: 你好,我正在努力; 一个人用自己的用户ID打开公告。在其他人进入本公告的内部后。若第二个人想要向第一个人发送通知,他将在firebase中使用第一个人的userid表,并将自己的userid放在第一个人的userid表中。若第一个人想看到谁向他发送通知,他会查看自己的用户id表,并看到其他人的用户id其他人被发送通知给他。。现在一个人可以发送很多时间的通知,我想一个人可以只发送一次,因为这个原因我正在努力控制它 if (firebase.database().ref(

我的firebase结构:

你好,我正在努力; 一个人用自己的用户ID打开公告。在其他人进入本公告的内部后。若第二个人想要向第一个人发送通知,他将在firebase中使用第一个人的userid表,并将自己的userid放在第一个人的userid表中。若第一个人想看到谁向他发送通知,他会查看自己的用户id表,并看到其他人的用户id其他人被发送通知给他。。现在一个人可以发送很多时间的通知,我想一个人可以只发送一次,因为这个原因我正在努力控制它

if (firebase.database().ref(`/bavuruistek/${userid}`).child(katilan) === null ) {
  firebase.database().ref(`/bavuruistek/${userid}`)
    .push({
      katilan, istek })
    .then(() => {
      dispatch({ type: STUDENT_REQUEST_SUCCESS });
      Actions.pop();
    });
}
if (firebase.database().ref(`/bavuruistek/${userid}`).child(katilan) !== null) {
  console.log(firebase.database().ref(`/bavuruistek/${userid}/${katilan}`));
  Alert.alert(
    'Mesaj',
    'Daha önce başvurunuz yapılmış!',
    [
      { text: 'Tamam', onPress: () => null }
    ]
  );
}
您试图在if语句中使用firebase.database.ref`/bavuruistek/${userid}`.childkatilan,该语句不起作用,因为1返回引用对象。尝试这样的事情可能会帮助你达到预期的结果:

  firebase.database().ref(`/bavuruistek/${userid}`).child(katilan).once('value').then(snapshot => { 
    if (snapshot.val() === null ) {
      firebase.database().ref(`/bavuruistek/${userid}`)
        .update({ 
          katilan, istek
        })
        .then(() => {
          dispatch({ type: STUDENT_REQUEST_SUCCESS });
        Actions.pop();
        });
    } else {
      console.log(snapshot.val());
      Alert.alert(
        'Mesaj',
        'Daha önce başvurunuz yapılmış!',
        [
          { text: 'Tamam', onPress: () => null }
        ]
      );
    }
  }

主要区别在于,我正在使用、读取生成的快照值,并将其作为if语句的一部分来检查它是否为null。

hello。首先,非常感谢您的回复。我试过了,但不幸的是,它总是深入到if,但我删除了我的数据。为什么要删除数据?好的,我明白了。看起来if语句中的.push{katilan,istek}部分需要更改为.update{katilan,istek},因为.push将该路径视为一个包含值的数组,而不是一个像您所构造的对象。嘿,这一次的问题是它总是更新,它不会进入else方法。
  firebase.database().ref(`/basvuruistek/${userid}`).on('value', (snapshot) => {
  const { currentUser } = firebase.auth();     
      const notes = snapshot.val();
      Object.keys(notes).forEach(key => { 
        if (notes[key].katilan !== currentUser.uid) {
          this.setState({ click: true });
      } if (notes[key].katilan === currentUser.uid) {
       this.setState({ click: false });
      }
    });
  });