Tengo una base de datos en tiempo real de Firebase estructurada así:
users userid1 name: "name1" email: "email1" specialValue: "special" userid2 name: "name2" email: "email2" Quiero verificar si un usuario (ya tengo un ID de usuario) tiene la clave specialValue . Entonces esto debería devolver verdadero para userid1 y falso para userid2.
He intentado esto:
var check = firebase.database().ref('users').orderByKey().equalTo(userid).once("value", function (snapshot) { if (snapshot.exists()) { console.log("key exists"); } else { console.log("key doesn't exist"); } });No necesita una consulta para un nodo si conoce la clave, por lo que debería funcionar (y ser un poco más rápido una vez que tenga muchos nodos):
firebase.database().ref('users').child(userid).once("value").then((snapshot) => { if (snapshot.exists()) { console.log("exists"); } else { console.log("doesn't exist"); } }); Además de ser más corto y más rápido, también se garantiza que dará como resultado una sola instantánea, donde una consulta puede tener múltiples resultados. Aunque su consulta solo coincidirá con un resultado, la API aún devuelve el único resultado como una lista y tendría que repetirlo con forEach .