Estoy tratando de usar la función equalTo en Firebase Database JavaScript v9 SDK. No está muy bien documentado como V8, así que no puedo entender cómo hacer lo que quiero hacer.
Quiero filtrar los resultados por el type de campo. Mi campo principal es request-log con elementos secundarios como a continuación.
{"backtrace":false,"message":false,"organisationID":"Empty","postData":false,"referrer":"Empty","remoteIP":"0.0.0.0","requestMethod":"POST","time":1630129562,"type":"Error","url":"Empty","user":{"email":"Empty","firstName":"George","id":37,"lastName":"Bates"},"userAgent":"Empty"}Estoy intentando lo siguiente, pero no obtengo ningún resultado cuando se carga:
const readNewLogEntries = query(child(ref(db), 'request-log'), equalTo('Error', 'type')); También probé esto, como dicen los documentos de referencia para el segundo argumento en la función equalTo()
Este argumento solo se permite si se ordena por elemento secundario, valor o prioridad.
Pero esto tampoco funciona
const readNewLogEntries = query(child(ref(db), 'request-log'), orderByChild('type'), equalTo('Request', 'type'));EDITAR: Captura de pantalla de DB
Elimina el segundo parámetro de equalTo() .
El argumento clave opcional se puede utilizar para limitar aún más el rango de la consulta. Si se especifica, los elementos secundarios que tienen exactamente el valor especificado también deben tener exactamente la clave especificada como nombre de clave. Esto se puede usar para filtrar conjuntos de resultados con muchas coincidencias para el mismo valor.
const getData = async () => { const readNewLogEntries = await get( query(ref(db, "request-log"), orderByChild("type"), equalTo("Request")) // Filters where "type" is equal to "Request". Single arg here ⬆ ); console.log(readNewLogEntries.val()) return readNewLogEntries.val(); };Puede leer más sobre los parámetros en la documentación .