尝试弄清楚如何解决在尝试从CollectionReference创建查询时遇到的错误。我以为有一种方法可以做到这一点(也许有,我只是失败了),但是我不断从应用程序中收到this错误消息,如果我将CollectionReference更改为Query,则返回“ return await userCollection” .document(testData).setData ...部分开始返回错误。
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:myapp/models/camper.dart';
import 'package:myapp/models/user.dart';
import 'package:myapp/shared/globals.dart' as globals;
String collectionData = globals.testuid;
class DatabaseService {
final String uid;
DatabaseService({this.uid});
String testData = globals.testData;
//Collection Reference
CollectionReference userCollection = Firestore.instance
.collection(collectionData)
.where('CamperID', isEqualTo: '1');
updateUserData(String userId, String name, String evening_activity, String morning_activity,
String school, String camperID) async {
return await userCollection.document(testData).setData({
'userId': userId,
'name': name,
'evening_activity': evening_activity,
'morning_activity': morning_activity,
'school': school,
'camperID': camperID,
});
}
// User List from Snapshot
List<Camper> _userListFromSnapshot(QuerySnapshot snapshot) {
return snapshot.documents.map((doc) {
return Camper(
name: doc.data['name'] ?? 'Default Data',
school: doc.data['school'] ?? 'Default Data',
evening_activity: doc.data['evening_activity'] ?? 'Default Data',
morning_activity: doc.data['morning_activity'] ?? 'Default Data',
userId: doc.data['userId'] ?? '0',
camperID: doc.data['camperID'] ?? '0',
);
}).toList();
}
//userData from snapshot
UserData _userDataFromSnapshot(DocumentSnapshot snapshot) {
return UserData(
uid: uid,
name: snapshot.data['name'],
morning_activity: snapshot.data['morning_activity'],
evening_activity: snapshot.data['evening_activity'],
school: snapshot.data['school'],
camperID: snapshot.data['camperID'],
);
}
//Get User Stream
Stream<List<Camper>> get users {
return userCollection.snapshots().map(_userListFromSnapshot);
}
//Get user doc stream
Stream<UserData> get userData {
return userCollection.document(uid).snapshots().map(_userDataFromSnapshot);
}
}