AngularDart FireStore - Как «вызвать» один документ - PullRequest
0 голосов
/ 19 октября 2018

У меня есть панель инструментов (похожая на AngularDart Tour of Heroes), которая создает сетку кнопок на основе коллекции в FireStore.Когда кнопка нажата, вы переходите к отдельному элементу для подробного просмотра / редактирования.

Мне не удалось получить правильное значение "id" внутри этого компонента, чтобы можно было извлечь данные для этого документа из Firestore.

Прав ли мой метод вызова отдельных документов из Firestore?Это возвращает ноль.

Из того, что я могу сказать, проблема здесь в FirebaseService, который отвечает за вызов Firebase и составление списка «Героев». В частности, функция get (int id), похоже, не вызывает героевкак и ожидалось.

@Injectable()
class FirebaseService {

List<Hero> heroes = [];
List<Hero> hero =[];

getId(id) {
fs.Firestore store = firestore();
fs.DocumentReference docRef = store.collection('items').doc('id');

docRef.onSnapshot.listen((querySnapshot) {
  num number = querySnapshot.get('id');
  var name = querySnapshot.get('name');
  bool full = querySnapshot.get('pickupNeeded');
  var url = querySnapshot.get('id').toString();
  var item = new Hero(number, name, full, url);
  hero.insert(0, item);
  return hero;
});

}

  callFirestore() {

    fs.Firestore store = firestore();
    fs.CollectionReference ref = store.collection("items");


    ref.onSnapshot.listen((querySnapshot) {
      querySnapshot.docChanges().forEach((change) {
        if (change.type == "added") {
          var docSnapshot = change.doc;
          var id = docSnapshot.data()['id'];
          var name = docSnapshot.data()["name"];
          var full = docSnapshot.data()["pickupNeeded"];
          var url = docSnapshot.data()["id"].toString();
          print(id);
          print(name);
          print(full);
          var item = new Hero(id, name, full, url);
          heroes.insert(0, item);
        }
      });
    });
   }

  The function returns null. 
...