我在其中输入用户名的地方输入了文本,并单击了一个按钮,使用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之前检查每个用户名,以免获得重复的用户名
答案 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);
}
});