StreamBuilder<QuerySnapshot<Map<String, dynamic>>>(
stream: FirebaseFirestore.instance
.collection('users')
.where('bmi')
.limit(1)
.snapshots(),
},
)),
class User {
final double bmi;
User(
{required this.bmi});
Map<String, dynamic> toJson() => {
'bmi': bmi,
};
static User fromJson(Map<String, dynamic> json) => User(
bmi: json['bmi']);
}
I want to pull the last added 'bmi' value to firebase. Do I need to use the OrderBy() method?
I tried adding the .last method to the end of the snapshot. But
"The argument type 'Future<QuerySnapshot<Map<String, dynamic>>>' can't be assigned to the parameter type 'Stream<QuerySnapshot<Map<String, dynamic>>>?'.",
Gives a fault.
CodePudding user response:
Firestore has no built in concept of a timestamp for each document of when it was created or updated that you can use as a condition in a query.
If you need this, you'll have to add a timestamp field to each document yourself. Once that exists, you can get the latest document with:
FirebaseFirestore.instance
.collection('users')
.orderBy('yourTimestampField', descending: true)
.limit(1)
.snapshots(),
},
Also see the Firebase documentation on ordering and limiting data