我正在创建医院应用程序。我的目标是以这种方式配置Firebase,以使根集合名为User / uid(创建用户时自动生成的uid)/ someText / documentID(由Firebase自动生成)。这是我的代码:
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,
}
);
}
新用户注册后,将在User集合中自动创建带有其uid的文档。但是,当我尝试在User / uid / VaccineAdmnistered文件夹中输入一些个人数据时, 我无法在此代码行上传递当前用户uid的值
Firestore.instance.collection('User').document(uid).collection('Vaccine Administered');
我遇到的错误是
Only static members can be accessed in initializers.
答案 0 :(得分:1)
在调用构造函数之前,您正在方法uid
中使用document
。因此,请执行以下操作:
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,
}
);
}
创建一个变量vaccTaken
,该变量将引用集合User
,然后在方法updateUserData
中访问uid
。