【发布时间】:2019-12-28 04:33:09
【问题描述】:
我有一个函数(尚未完成),它应该检查用户名在我的 Firebase 数据库中是否已经存在/是否唯一。我已经在 Google 上搜索了如何实现这一点,并且我设法得到了以下内容。不幸的是,它不起作用,我什至没有得到任何 console.logs。任何帮助表示赞赏 - 我到底做错了什么?
onChangeUsername = (event) => {
var oldError = {...this.state.error};
firebase.database().ref().child("Usernames").orderByValue().once('value', (snapshot) => {
var exists = (snapshot.val() !== null);
console.log(exists);
console.log("hello");
});
if(this.state.validation.username.unique===true)
{oldError.username = "This username is already taken"}
else if((event.nativeEvent.text.length<this.state.validation.username.min) || (event.nativeEvent.text.length>this.state.validation.username.max) )
{oldError.username = "Username should be between " + this.state.validation.username.min + " and " + this.state.validation.username.max + " characters" ;}
else oldError.username = "";
this.setState({ username: event.nativeEvent.text, error:oldError })
}
我的数据库结构如下:
Database:{ Usernames: {uid1: username1, uid2: username2}}
****问题更新**** 在 Frank 发表评论后,我已将代码更改为以下内容。它仍然不起作用,但我的他发现了几个需要修复的错误:
onChangeUsername = (event) => {
var oldError = {...this.state.error};
firebase.database().ref().child("Usernames").orderByKey().equalTo("Username1").once('value', (snapshot) => {
var exists = (snapshot.val() !== null);
console.log(exists);
console.log("hello");
});
if(this.state.validation.username.unique===true)
{oldError.username = "This username is already taken"}
else if((event.nativeEvent.text.length<this.state.validation.username.min) || (event.nativeEvent.text.length>this.state.validation.username.max) )
{oldError.username = "Username should be between " + this.state.validation.username.min + " and " + this.state.validation.username.max + " characters" ;}
else oldError.username = "";
this.setState({ username: event.nativeEvent.text, error:oldError })
}
我的数据库如下:
Database:{ Usernames: {Username1: uid1, Username2: uid2}}
【问题讨论】:
标签: javascript firebase react-native firebase-realtime-database