Cómo consultar valores múltiples para una key determinada en firebase

Intenté usar un 'OR' || statement en el método equalTo() , pero esto no parece funcionar. ¿Tengo que hacer una llamada por separado para cada valor o hay alguna manera de realizar consultas condicionales en firebase?

 export const startSetContent = () => { return (dispatch, getState) => { const ref = database.ref("content"); return ref .orderByChild("category") .equalTo('one-act-play' || 'ten-min-play' || 'full-length-play') .once('value') .then(snapshot => { const content = []; snapshot.forEach(childSnapshot => { content.push({ id: childSnapshot.key, ...childSnapshot.val() }); }); dispatch(setContent(content)); }); }; }; 

Lo que escribiste allí era un O lógico que JavaScript interpreta el lenguaje de progtwigción. El resultado de la expresión:

 'one-act-play' || 'ten-min-play' || 'full-length-play' 

va a ser simplemente:

 'one-act-play' 

Por lo tanto, Firebase Realtime Database no verá lo que intentas decir.

Firebase Realtime Database no tiene ningún concepto de un tipo de consulta que tenga ORs. Deberá consultar cada tipo de elemento por separado y combinarlos en su código según sea necesario.

No hay ningún concepto de hacer lo que estás pidiendo. Puedes dar un giro en el que puedes get los valores en base a un filter one-act-play usando equalTo y rest puedes filtrar en el extremo del usuario como:

 export const startSetContent = () => { return (dispatch, getState) => { const ref = database.ref("content"); return ref .orderByChild("category") .equalTo('one-act-play') .once('value') .then(snapshot => { const content = []; Object.keys(snapshot.val()).map(k => { if(k == 'ten-min-play' || k == 'full-length-play'){ snapshot.forEach(childSnapshot => { content.push({ id: childSnapshot.key, ...childSnapshot.val() }); }); } dispatch(setContent(content)); }); }; }; 

O puede usar la biblioteca creada para cumplir este tipo de requisito Querybase