Flutter: Firestore Query из CollectionReference - PullRequest
0 голосов
/ 10 февраля 2020

Попытка выяснить, как исправить ошибку, которую я получаю, когда пытаюсь, и создать запрос из моей коллекции CollectionReference. Я думал, что есть способ сделать это (и, возможно, есть, и я просто терплю неудачу), но я продолжаю получать сообщение об ошибке this из приложения, и если я изменяю CollectionReference на Query, возвращаем " 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);
  }
}

Добавлена ​​структура базы данных в виде скриншота

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...