在添加之前检查输入数据是否存在于Firebase中

时间:2018-12-12 17:10:37

标签: reactjs

我在其中输入用户名的地方输入了文本,并单击了一个按钮,使用react将其添加到firebase数据库 正常,这是我的代码:

这是我在编写并单击时处理的功能:

    onSubmitInputChange(event) {
        this.setState({
            usernameValue: event.target.value
        });
    }

    onSubmit(event) {
                firebase.firestore().collection('readers').add({
                  email: this.state.usernameValue
                })
        }

这是渲染中的输入和按钮代码:

<SubscribeBox
       onChange={this.onSubmitInputChange.bind(this)}
       value={this.state.usernameValue} placeholder="email address" />

<Button onClick={this.onSubmit.bind(this)}>
 ADD
</Button>

它工作正常,当我在输入中写东西时,将用户名添加到firebase,然后单击按钮 但是我只想添加用户名,除非它在Firebase中不存在,所以我如何在将每个用户名添加到Firebase之前检查每个用户名,以免获得重复的用户名

2 个答案:

答案 0 :(得分:2)

在将用户添加到Firebase之前,使用邮件请求查询并检查是否有结果:

onSubmit(event) {


    firebase.firestore().collection('readers').where("email", "==", this.state.usernameValue).get().then((resultSnapShot) => {

        // resultSnapShot is an array of docs where "email" === "user_mail"

        if (resultSnapShot.size == 0) {
            //Proceed

            firebase.firestore().collection('readers').add({
                email: this.state.usernameValue
            })

        } else {
            //Already registered
            console.log("User exists!!!")
        }

    })

}

答案 1 :(得分:0)

ref.child("readers").orderByChild("email").equalTo(usernameValue).once("value",snapshot => {
    if (snapshot.exists()){
      const userData = snapshot.val();
      console.log("exists!", userData);
    }
});