Solución:
los exists()
El método es parte del snapshot
objeto que es devuelto por consultas de base de fuego. Entonces tenga en cuenta que no podrá evitar recuperar los datos para verificar si existen o no.
ref.child("users").orderByChild("ID").equalTo("U1EL5623").once("value",snapshot => {
if (snapshot.exists()){
const userData = snapshot.val();
console.log("exists!", userData);
}
});
Observaciones:
En caso de que se encuentre en un escenario diferente en el que tenga la ruta de referencia exacta donde podría estar el objeto, no necesitará agregar orderByChild
y equalTo
. En este caso, puede buscar directamente la ruta al objeto para que no necesite ningún procesamiento de búsqueda de firebase. También, si conoce una de las propiedades que debe tener el objeto, puede hacer lo que se muestra a continuación y hacer que recupere solo esta propiedad y no todo el objeto. El resultado será una comprobación mucho más rápida.
//every user must have an email
firebase.database().ref(`users/${userId}/email`).once("value", snapshot => {
if (snapshot.exists()){
console.log("exists!");
const email = snapshot.val();
}
});
Esta es una solución similar si desea verificar si existe un correo electrónico en firebase
firebase.app().database().ref("shops").orderByChild("email")
.equalTo(user.email).once("value", snapshot => {
const userData = snapshot.val();
// Check if it is a SHOP.
if (userData) {
console.log("Shop logged in!");
this.setState({
isAdminLoggedIn: false,
isUserLoggedIn: false,
isShopLoggedIn: true,
isNoneLoggedIn: false
});
// Check if it is a USER.
} else {
console.log("User logged in");
this.setState({
isAdminLoggedIn: false,
isUserLoggedIn: true,
isShopLoggedIn: false,
isNoneLoggedIn: false
});
}
});