我正在尝试创建一个输入表单,以检查数据是否存在于Firebase数据库中,下面是我用来检查数据的代码:
if(element.validation.codeunique) {
function checkCode(inputcode) {
firebaseUsers.orderByChild('code')
.equalTo(inputcode).once('value')
.then( snapshot => {
let thecode = null;
if(snapshot.val()){
thecode = false;
} else {
thecode = true;
}
console.log(thecode)
})
}
let checkcode = null;
checkcode = checkCode(element.value);
console.log(checkcode)
const valid = checkcode;
const message = `${!valid ? 'Code Exists':''}`;
error = !valid ? [valid,message] : error
}
在数据库中,我有一个数据:
用户
-L3ZeHOI7XOmP9xhPkwX
-code:“ DEM”
当我以以下格式输入数据 DEM 时:
console.log(代码)结果为假(这是我想要的结果)
当我以
形式输入另一个数据 ASD 时:
console.log(代码)结果为true(这是我想要的结果)
所以firebaseUsers实际上是在向我提供我想要的反馈/数据,
但是当我尝试使用true / false使数据有效时,
这是我最初使用的代码:
if(element.validation.codeunique) {
function checkCode(inputcode) {
firebaseUsers.orderByChild('code')
.equalTo(inputcode).once('value')
.then( snapshot => {
if(snapshot.val()){
return false;
} else {
return true;
}
})
}
const valid = checkCode(element.value);
const message = `${!valid ? 'Code Exists':''}`;
error = !valid ? [valid,message] : error
}
有效显示=未定义,
我的目标是让有效节目显示为真/假,
有人可以帮我,指出我做错了什么吗?
*我编写第一个代码只是为了指出Firebase实际上正在工作
*第二个代码是我最初使用的代码
答案 0 :(得分:0)
有些问题对我很重要。
首先,您最初使用的代码是在函数的return
条件中使用if / else
。我相信这是正确的,您将需要回去做。
第二,您正在调用的firebase.orderByChild()
函数是一个Promise,因为它附加了一个.then()
语句。这意味着该函数不会同步完成执行并返回值。在firebase函数仍在处理时,正在运行该promise下方的代码。
试一下,看看它是否有效,以及是否有超出承诺的其他错误。
if(element.validation.codeunique) {
function checkCode(inputcode) {
firebaseUsers.orderByChild('code')
.equalTo(inputcode).once('value')
.then( snapshot => {
if(snapshot.val()){
return false;
} else {
return true;
}
console.log(thecode)
})
}
let message = checkCode(element.value) ? 'Code Exists':'Code Does not Exist';
}
答案 1 :(得分:0)
我已经在上面的函数之外完成了此操作,并在用户提交表单时对其进行了检查,如果代码存在,我将其再次定向为表单:
if (userEmail.count == 0 || userPassword.count == 0 ||
userRepeatPassword.count == 0)
{
// Display Alert Message
displayMyAlertMessage(userMessage:"All fields are required")
return
}else{
//Check if passwords match
if (userPassword != userRepeatPassword)
{
// Display an alert message
displayMyAlertMessage(userMessage:"Passwords do not match")
return
}
}
// Store data
UserDefaults.standard.set(userEmail, forKey:"userEmail")
UserDefaults.standard.set(userPassword, forKey:"userPassword")
UserDefaults.standard.synchronize()
希望这会对某人有所帮助