uf8ff query orderbykey leer example datos consultas android firebase firebase-database firebase-realtime-database

query - Cómo buscar un valor en firebase Android



query firebase android (6)

Esto está funcionando con Google Firebase.

DatabaseReference mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference(); Query query = mFirebaseDatabaseReference.child("userTasks").orderByChild("title").equalTo("#Yahoo"); query.addValueEventListener(valueEventListener); ValueEventListener valueEventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { //TODO get the data here } } @Override public void onCancelled(DatabaseError databaseError) { } };

Estoy guardando datos de la siguiente manera en Firebase:

Quiero encontrar todos los registros que tengan #Yahoo en su título. ¿Cuál será la consulta exacta para eso?

Estoy confundido con la clave aleatoria creada. No estoy seguro de cómo manejar esto, así que lo estoy publicando aquí.

Firebase firebase = new Firebase(Constants.FIREBASE_URL_USER_TASKS).child(Utils.encodeEmail(unProcessedEmail)); Query queryRef = firebase.orderByKey().startAt("#" + mHashTag).endAt("#" + mHashTag + "/uf8ff"); queryRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { mTasksList.clear(); mAdapter.notifyDataSetChanged(); for (DataSnapshot task : dataSnapshot.getChildren()) { mTasksList.add(task.getValue(TaskModel.class)); } mAdapter.notifyItemRangeInserted(0, mTasksList.size()); mSwipeToRefresh.post(new Runnable() { @Override public void run() { mSwipeToRefresh.setRefreshing(false); } }); } @Override public void onCancelled(FirebaseError firebaseError) { mSwipeToRefresh.post(new Runnable() { @Override public void run() { mSwipeToRefresh.setRefreshing(false); } }); } });


No puede buscar ningún elemento cuyo título contenga #Yahoo . Ver: ¿Cómo realizar la operación sql "LIKE" en firebase?

Sin embargo, puede buscar elementos cuyo título comience con #Yahoo :

Firebase firebase = new Firebase(Constants.FIREBASE_URL_USER_TASKS).child(Utils.encodeEmail(unProcessedEmail)); Query queryRef = firebase.orderByChild("title").startAt("#" + mHashTag)

Para que esto funcione bien, debe agregar un índice a sus reglas de Firebase :

"rules": { "userTasks": { "$email": { ".indexOn": "title" // index tasks in their title property } } }


Prueba el siguiente código

DatabaseReference mDatabaseRef =FirebaseDatabase.getInstance().getReference("userTasks"); Query query=mDatabaseRef.orderByChild("title").equalTo("#Yahoo"); query.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot data:dataSnapshot.getChildren()){ Records models=data.getValue(Records.class); String latitude=models.getLatitude(); String longitude=models.getLongitude(); } } @Override public void onCancelled(DatabaseError databaseError) { } });

He declarado solo dos cadenas aquí, latitud y longitud. Si desea cargar más valores, debe agregar eso también.

Luego cree una nueva clase Registros de la siguiente manera

public class Records { public String latitude,longitude; public Records() { } public String getLatitude() { return latitude; } public void setLatitude(String latitude) { this.latitude = latitude; } public String getLongitude() { return longitude; } public void setLongitude(String longitude) { this.longitude = longitude; } }


Respuesta: simplemente haga la siguiente consulta:

databaseReference.orderByChild(''_searchLastName'') .startAt(queryText) .endAt(queryText+"/uf8ff");

Podemos combinar startAt y endAt para limitar ambos extremos de nuestra consulta. El siguiente ejemplo encuentra todos los dinosaurios cuyo nombre comienza con la letra b :

curl ''https://dinosaur-facts.firebaseio.com/dinosaurs.json?orderBy="$key"&startAt="b"&endAt="b/uf8ff"&print=pretty''

El carácter /uf8ff utilizado en la consulta anterior es un punto de código muy alto en el rango Unicode. Debido a que es posterior a la mayoría de los caracteres regulares en Unicode, la consulta coincide con todos los valores que comienzan con una b .

Aquí hay una .com/a/40633692/4409113 y los documentos oficiales .


Sé que es tarde, pero esta solución funcionó para mí.

getContentResolver().delete(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, MediaStore.Video.VideoColumns.DATA + "=?" , new String[]{ paths.get(i) });


DatabaseReference mDatabase =FirebaseDatabase.getInstance().getReference("userTasks"); mDatabase.orderByChild("title").equalTo("#Yahoo").addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot snapshot: dataSnapshot.getChildren()) { ///Here you can get all data } @Override public void onCancelled(DatabaseError databaseError) {} });