Firebase Cloud Firestore noSQL - PullRequest
       8

Firebase Cloud Firestore noSQL

0 голосов
/ 08 июня 2018

База данных имеет коллекцию пользователей, вопросов и ответов.см. ниже

Users
------
firstName
lastName

Questions
-------
date
question

Answers
-------
date
answer
questionId
userId

Вариант использования: получить ответы пользователей и вопрос на эти ответы.Показать вопрос и ответ

мой код:

    //User Questions with Answers
this.db.collection('Answers', ref => ref.where('userId', '==', userId) ).snapshotChanges()
  .subscribe(data => {
    return data.map(a => {
      const data = a.payload.doc.data();
      console.log(data);
      console.log(data.questionId);
      //qa.answers.push(data);

      //Get each question from the answer now
      // bummer that this is a seperate request, very chatty
      var question = this.db.collection('Questions')
        .doc(data.questionId).valueChanges()
          .subscribe(ref => {

            console.log(ref);
            return ref;
          });   

      return {data, question};
    });
  });

2 вопроса:

  1. Это лучший способ?Он делает запрос к серверу, чтобы получить вопрос для каждого ответа.Кажется болтливым.
  2. Ему действительно удается получить данные, хотя болтливый, теперь, как мне их отобразить?

Спасибо, я новичок в noSQL и Firebase.

1 Ответ

0 голосов
/ 08 июня 2018

2 - как дисплей?"показать это" где?Во внешнем интерфейсе ~?

При использовании AngularFire вы можете попробовать:

в .ts

answersCol : AngularFirestoreCollection<Answers>;
answersObersArray: Observable<Answers[]>;
answersArray: Array<Answers>;

this.answersCol  = this.db.collection('survey/' + userId);
this.answersObersArray = this.answersCol .valueChanges();

this.answersObersArray .subscribe(answers => {
   this.answersArray = answers ;//--Working with arrays
});

в .html

<table class="table table-bordered">
  <tbody *ngFor="let answer of answersArray ">
         <tr style="font-weight:bold">
           <td>{{ answer  }}</td>
          </tr>
  </tbody>
</table>

(проверено)

При использовании Observable вы можете попробовать:

in .ts

var answersCol = this.db.collection('answers/' + userId');//Check ur struct
answersObservArray: Observable<Answers[]>; //If you have a Answers class

this.answersObservArray= this.answersCol.valueChanges();

in.html

<h4 class="title"> {{ (answersObservArray| async)}}</h4>

(не полностью проверено)

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