How to Get Value of Some Field in Firebase Firestore Android

Firestore get DocumentSnapshot's field's value

DocumentSnapshot has a method getString() which takes the name of a field and returns its value as a String.

String value = document.getString("username");

How can i retrieve a field value from a specific document in firestore using flutter?

While using the FirebaseFirestore.instance to get your data, the .get() is for specifying the GetOptions with feature like cache.

But that is not what you require.

Use it like this,

totalClasses = await FirebaseFirestore.instance
.collection('tutors')
.doc(uid)
.get()
.then((value) {
return value.data()['TotalClassesTook']; // Access your after your get the data
});

How to get a field value from a Document in Firestore?

Your code is good you just have to await for the result:

void yourVoid () async {
String photoy;
await Firestore.instance.collection('userdata').document('sepDGexTRuRkpx1WQYylDDmUI573')
.get().then((DocumentSnapshot ds){
photoy=ds.data['photourl'];
});

setState(() {
photourldisplay=photoy;
});
}

EDIT:
as @Doug Stevenson said, there is two propers solutions:

void yourVoid () async {

DocumentSnapshot ds = await Firestore.instance.collection('userdata').document('sepDGexTRuRkpx1WQYylDDmUI573')
.get();

String photoy = ds.data['photourl'];

setState(() {
photourldisplay=photoy;
});
}

and:

Firestore.instance.collection('userdata').document('sepDGexTRuRkpx1WQYylDDmUI573')
.get().then((DocumentSnapshot ds){
photoy=ds.data['photourl'];

setState(() {
photourldisplay=photoy;
});
});

Android Firestore get field values by document id

If you want to get that specific document you can try this

    DocumentReference docRef = db.collection("projects").document("YOURDOCIDHERE");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Log.d(TAG, "DocumentSnapshot data: " + document.getData());
} else {
Log.d(TAG, "No such document");
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
}
});

If you want get all documents by key order then you can try making a query like this.

docRef.orderByKey()

Check firebase documention for more info.

How to get value of some field in firebase firestore android?

The Cloud Firestore client-side SDKs always read and returns full documents. There is no way to read a subset of the fields in a document.

You can retrieve the entire document, and then process the DocumentSnapshot to just use the fields you're interested. But this means you're using more bandwidth than needed. If this is a regular occurrence for your app, consider creating a secondary collection where each document contains just the fields you're interested in.

Also see Doug's answer here (for Swift): How to access a specific field from Cloud FireStore Firebase in Swift

How can I get same field from different document in FIrestore in Android java

All Firestore listeners fire on the document level. This means that there is no way you can only get the value of a single field in a document. It's the entire document or nothing. That's the way Firestore works. However, you can only read the value of a single property that exists within multiple documents. To achieve that, please use the following lines of code:

FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("Food List").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
if (document != null) {
long kcal = document.getLong("kcal");
Log.d(TAG, "kcal: " + kcal);
}
}
} else {
Log.d(TAG, task.getException().getMessage());
}
}
});

The result in the logcat will be:

kcal: 424
.........

Firebase-firestore querying the selected field values using Android FirestoreRecyclerAdapter not working

how to add multiple emails as a input.

I think you are looking for in condition

Query query = db.collection("users").whereIn("email", Arrays.asList("xyz@gmail.com", "abc@gmail.com"));
  • in query returns documents where the given field matches any of the comparison values

Is there a way to check a firestore document if its certain field is equivalent to some value?

Is there a way to check a Firestore document if its certain field is equivalent to some value?

Sure, there is. As you already said, yes, you have to iterate over the collection, but not for getting all documents and checking the new product name on the client. You have to do that in a query. Assuming that you have a collection called "products", to check if a specific product name already exists, please use the following lines of code:

val db = FirebaseFirestore.getInstance()
val productsRef = db.collection("products")
Query queryByProductName = productsRef.whereEqualTo("productName", newProductName)
queryByProductName.get().addOnCompleteListener { task ->
if (task.isSuccessful) {
if (!task.result.isEmpty) {
Log.d(TAG, "$newProductName already exists.")
} else {
Log.d(TAG, "$newProductName doesn't exist.")
}
} else {
Log.d(TAG, "Error getting documents: ", task.exception)
}
}

Android studio Firebase Firestore cann't retrieve field data

It looks like the issue is that you have created a document that is more nested than you intended, and includes the document id in the document itself. You created something like this (which you can see in your Firestore screenshot, as well as the log output you posted):

collection[docId] = {docId={group_name=Test}}

when I think you intended to create

collection[docId] = {group_name=Test}

To fix this, you would just change document(key).set(update) to document(key).set(groupData) in CreateNewGroup.

There are several useful examples of how to set and update document data in the Firestore docs.

Alternately, if this is your intended document structure you would need to change how you retrieve group_name.

Instead of

String group = documentSnapshot.getString("group_name");

you would need something like this to first retrieve the nested map, then get the group_name attribute from it

String group = documentSnapshot.getData().get(key).get("group_name");


Related Topics



Leave a reply



Submit