Reputation: 110
I'm creating an Hospital App in flutter. My goal is to configure firebase in such a way that the root collection is named User/uid(uid which is automatically generated when user is created)/someText/documentID(automatically generated by Firebase). This is my code:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:mgm_app/models/vaccList.dart';
class DatabaseService {
final String uid;
DatabaseService({this.uid});
CollectionReference userReg = Firestore.instance.collection('User');
CollectionReference vaccTaken = Firestore.instance.collection('User').document(uid).collection('Vaccine Administered');
Future regUserData(String email) async {
return await userReg.document(uid).setData({
'email': email,
});
}
Future updateUserData(String vaccName,String dateAdmin) async {
return await vaccTaken.document().setData({
'name': vaccName,
'vaccine given': dateAdmin,
}
);
}
When a new user registers, a document with their uid is automatically created in the User collection. But when I'm trying to enter some personal data in the folder User/uid/VaccineAdmnistered, I am not able to pass the value of the current user uid on this line of code
Firestore.instance.collection('User').document(uid).collection('Vaccine Administered');
The error i'm getting is
Only static members can be accessed in initializers.
Upvotes: 0
Views: 513
Reputation: 80914
You are using the uid
inside the method document
before the constructor is called. Therefore do the following:
class DatabaseService {
final String uid;
DatabaseService({this.uid});
CollectionReference vaccTaken = Firestore.instance.collection('User');
Future regUserData(String email) async {
return await vaccTaken.document(uid).setData({
'email': email,
});
}
Future updateUserData(String vaccName,String dateAdmin) async {
return await vaccTaken.document(uid).collection('Vaccine Administered').document().setData({
'name': vaccName,
'vaccine given': dateAdmin,
}
);
}
Create a variable vaccTaken
which will reference the collection User
, then inside the method updateUserData
access the uid
.
Upvotes: 1