как искать документ в firestore по его ссылке - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть две коллекции, одна из которых является нормальной коллекцией, а другая содержит documentReference для первой, что я хочу сделать, это дать мне указанный документ c по его ссылке, я нахожу специфику c документ, выполнив поиск по l oop, но есть ли лучший способ сделать это, не получая весь документ из первой коллекции, просто получите единственный, который мне нужен.

static Future<List<author_model>> getTHEauthor(DocumentReference documentReference) async{
    String ref = documentReference.documentID;
    DocumentReference dReference = articleCollection.document(documentReference.documentID);
    List<author_model> author=[];
    author_model model ;
    final QuerySnapshot querySnapshot = await authors.getDocuments();
    List<DocumentSnapshot> result = querySnapshot.documents;

    for(int i=0 ; i<result.length ; i++) {
      if (result[i].documentID == ref) {
          model = new author_model(
           result[i]['author_name'], result[i]['author_image'],
           result[i]['author_work_exeperience']
           , result[i]['autor_education']);
           author.add(model);
         break;
      }
    }
    // print(author.length);
    return author;
  }

также я пробовал это, но ничего не дал

var snap = documentReference.get();
author_model m = author_model.map(snap);
print(m.author_name + ": " + m.author_education)

Также пробовал этот запрос

 final QuerySnapshot querySnapshot = await authors.where('documentID', isEqualTo: 
  ref).getDocuments();

но никакого результата, я не знаю как получить только документ с указанием c ссылки. Я не хочу получать весь документ из коллекции авторов,

Кто-нибудь может мне помочь, как запросить и получить только для указанного c документа, пожалуйста?

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Я использовал этот код, я использовал построитель потока @ gso_gabriel

Stream authorStream ;



@override
void initState() {
authorStream=Firestore.instance.collection('doctors_authors').document(_article.author_reference.documentID).snapshots();
super.initState(); }



  child: StreamBuilder(
       stream: authorStream,
      builder: (context, snapshot) {
       if (snapshot.hasData) {
        return Column(
          children: <Widget>[
            SizedBox(height: 30,),
            GestureDetector(
              child: CircleAvatar(
                radius: 50,
                backgroundImage: NetworkImage(snapshot.data['author_image'].toString()),),
1 голос
/ 04 февраля 2020

Я бы порекомендовал вам взглянуть на вопрос, на который уже дан ответ: Поиск всех документов с указанием c в Cloud Firestore

Похоже, это очень связано с вашим дело и решение, безусловно, должно помочь вам. :)

Дайте мне знать, помогла ли вам ссылка!

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