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