javascript firebase firebase-realtime-database

javascript - métodos de consulta de firebase startAt() que toman parámetros sensibles a mayúsculas y minúsculas



firebase-realtime-database (1)

Este código está funcionando bien.

La única mejora que quiero es : cuando paso "Pi", busca todos los objetos que comienzan con el nombre "Pi", pero cuando ingreso "pi" no devuelve nada.

Esto significa que quiero que este método startAt(itemName) distinción entre mayúsculas y minúsculas. Entonces, eso debería funcionar con cualquier cosa (minúscula o mayúscula) en ese caso "Pi" o "pi", etc.

//5. Get menu items from RestaurantMenu this.getMenuItemFromRestaurantMenu = function(callback, itemName) { var ref_restMenu = firebase.database().ref() .child(''Restaurants'') .child(''Company'') .child(''menu''); //Check if item is already exist! ref_restMenu.orderByChild("itemName").startAt(itemName).once("value", function(snapshot) { var data = snapshot.val(); if(data !== null) { //We will ger item name and restaurant id from this data. callback(data); } else { //Item not found in globalMenu console.log("%c Item not found in Global Menu", "color: red"); } }); }


Actualmente no hay soporte para búsquedas en minúsculas en Firebase. La mejor manera de manejar esto sería almacenar la cadena en minúsculas junto a la cadena original y luego consultar la cadena en minúsculas.

var ref_restMenu = firebase.database().ref() .child(''Restaurants'') .child(''Company'') .child(''menu''); var item = "Apple Pie"; // Or however you store data ref.push({ itemName: item, itemNameLower: item.toLowerCase(), ... })

Entonces podría consultar así:

//Check if item is already exist! // query itemNameLoweruse and .toLowerCase() ref_restMenu.orderByChild("itemNameLower").startAt(itemName.toLowerCase()).once("value", function(snapshot) { var data = snapshot.val(); if(data !== null) { //We will ger item name and restaurant id from this data. callback(data); } else { //Item not found in globalMenu console.log("%c Item not found in Global Menu", "color: red"); } });

Esto requiere replicar los datos, pero a partir de ahora no hay una opción previsible más fácil.

Referencia: Firebase Google Forum