Ionic Angular Firestore: неправильно индексировать массив? - PullRequest
0 голосов
/ 26 июня 2018

В настоящее время я возлюсь с пожарным магазином, чтобы разобраться с основами. Однако у меня возникают проблемы с чтением моих данных (в виде массива документов в коллекции), так как они индексируются в порядке, который я не могу понять. По сравнению с базой данных в реальном времени, она была упорядочена в зависимости от времени, когда она была отправлена ​​в базу данных. Я понимаю, что сейчас есть реализация для индексирования в firestore, поэтому я создал метку времени в полях моих документов.

проблема: попытка прочитать данные в хронологическом порядке, как они были отправлены в firestore, и отобразить их в том же порядке в hmtl. Шоу в странном порядке

Все еще учусь, поэтому проблема, вероятно, более очевидна, чем я понимаю, заранее спасибо.

HTML:

<ion-header>
  <ion-navbar>
    <ion-title>
      Ionic Blank
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
 <ion-input placeholder = "Your name" [(ngModel)] = "name" >  </ion-input>
 <ion-input placeholder = "Your age" [(ngModel)] = "age" >  </ion-input>
 <ion-input placeholder = "Your sex" [(ngModel)] = "sex" >  </ion-input>
 <ion-input placeholder = "Your race" [(ngModel)] = "race" >  </ion-input>

 <button ion-button (click) = "submit()"> Submit </button>
 <br>
 <button ion-button (click) = "peek()"> Peek </button>
 <br>
 <button ion-button (click) = "load()"> Load </button>

 <ion-item *ngFor = "let person of people">
  <h3> {{person.name}} </h3>
  <p> Age: {{person.age}}</p>
  <p> Sex: {{person.sex}}</p>
  <p> Race: {{ person.race }}</p>
 </ion-item>


</ion-content>

TS:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import firebase from "firebase";
import "firebase/firestore";

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  public name: string;
  public age: string;
  public sex: string;
  public race: string;
  public db;
  public colRef;
  public docRef;
  public people: Array<any>;

  constructor(public navCtrl: NavController) {
    this.db = firebase.firestore(); 
    this.colRef = this.db.collection("people");
  }

  submit(){
    this.db.collection("people").add({
      name: this.name,
      age: this.age,
      sex: this.sex,
      race: this.race,
      timeCreated: new Date().getTime()
    }).then(cont => {
      alert("Data uploaded!");
      this.name = "";
      this.age = "";
      this.sex = "";
      this.race = "";
    });
  }

  peek(){
    alert("Name: "+ this.name);
  }

  load(){
    this.colRef.get().then( snapshot => {
      this.people = [];
      snapshot.forEach(doc => {
        var data = doc.data();
        this.people.push({
          id: doc.key,
          name: data.name,
          age: data.age,
          sex: data.sex,
          race: data.race,
          timeCreated: data.timeCreated
        });
      });
      console.log(this.people);

    });
  }
}

Структура данных Firestore: рис

Отображение данных в приложении / порядок: рис

Консольный журнал массива данных, полученных из пожарного хранилища: рис

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