Flutter:来自CollectionReference的Firestore查询

时间:2020-02-10 05:51:47

标签: flutter google-cloud-firestore

尝试弄清楚如何解决在尝试从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);
  }
}

Added Database structure as screenshot

0 个答案:

没有答案