метод setData не определен для типа documentreference.

avatar
Cameron Johnson
9 августа 2021 в 00:35
1409
1
1

В настоящее время я переношу весь свой устаревший код в новейшую версию firebase, и когда я обновил зависимость firebase, это дало мне ошибку, что метод setData не определен для типа ' ссылка на документ'.

class DatabaseService {

  final String uid;
  DatabaseService({ this.uid });

  // Collection reference
  // final CollectionReference brewCollection = FirebaseFirestore.instance.collection('brews');
  final CollectionReference<Map<String, dynamic>> brewCollection = FirebaseFirestore.instance.collection('brews');



  Future updateUserData(String sugars, String name, int strength) async {
    return await brewCollection.doc(uid).setData({
      'sugars' : sugars,
      'name'  : name,
      'strength' : strength
    });
  }


  // Brew list from snapshot
  List<Brew> _brewListFromSnapshot(QuerySnapshot snapshot) {
    return snapshot.docs.map((doc){
      return Brew(
          name: doc.data['name'] ?? '',
          strength: doc.data['strength'] ?? 0,
          sugars: doc.data['sugars'] ?? '0'
      );
    }).toList();
  }

  // Get brews stream
  Stream<List<Brew>> get brews {
    return brewCollection.snapshots().map(_brewListFromSnapshot);
  }

  UserData _userDataFromSnapshot(DocumentSnapshot snapshot) {
    return UserData(
        uid: uid,
        name: snapshot.data['name'],
        sugars: snapshot.data['sugars'],
        strength: snapshot.data['strength']
    );
  }

  // Get user document
  Stream<UserData> get userData {
    return brewCollection.doc(uid).snapshots().map(_userDataFromSnapshot);
  }

}
Источник

Ответы (1)

avatar
Frank van Puffelen
9 августа 2021 в 01:04
4

Метод setData() был переименован просто в set() в версии 2.0 плагинов FlutterFire.

В таких случаях я считаю наиболее полезным держать под рукой справочную документацию, например, для класса DocumentReference в этом конкретном случае.

Cameron Johnson
9 августа 2021 в 09:02
0

Спасибо за предложение, я просмотрел документацию, и это очень помогло! У меня просто проблема со строковыми и целочисленными значениями, которые я назначаю «Варить». В частности, значения внутри метода данных. Теперь говорится, что объект '[]' не определен для функции объекта типа. Я уверен, что это просто синтаксическая ошибка, которую я не улавливаю, которая приходит с новым обновлением firebase, но я не слишком уверен. Спасибо за помощь!

Frank van Puffelen
9 августа 2021 в 15:21
0

Возможно, вы захотите поискать это новое сообщение об ошибке, поскольку я видел, как оно часто всплывает за последние несколько месяцев, и исправление всегда очень похоже.

Cameron Johnson
9 августа 2021 в 19:55
0

Спасибо за вклад, я нашел эту тему, которая ответила на вопрос. coderhelper.com/questions/68615606/…