Ионная проблема с firestore «Поведение объектов Date, хранящихся в Firestore, изменится» - PullRequest
0 голосов
/ 13 сентября 2018

У меня в настоящее время проблемы с моим crud, использующим firestore, по какой-то причине, когда я компилирую, я получаю следующие ошибки:

index.esm.js:77 [2018-09-13T17:35:48.498Z]  @firebase/firestore: Firestore (5.0.4): 
The behavior for Date objects stored in Firestore is going to change
AND YOUR APP MAY BREAK.
To hide this warning and ensure your app does not break, you need to add the
following code to your app before calling any other Cloud Firestore methods:

  const firestore = firebase.firestore();
  const settings = {/* your settings... */ timestampsInSnapshots: true};
  firestore.settings(settings);

With this change, timestamps stored in Cloud Firestore will be read back as
Firebase Timestamp objects instead of as system Date objects. So you will also
need to update code expecting a Date to instead expect a Timestamp. For example:

Я попытался сделать, как предложено, и передать его следующим образом

apiKey: "**********", authDomain: "************", databaseURL: "************", storageBucket: "*****************", messagingSenderId: "*************", ID проекта: "***********",

Я тоже получаю те же ошибки. Другая проблема, которая мне кажется, состоит в том, что это единственная проблема, или что-то не так с моим кодом. Поскольку я не знаю, мешает ли эта ошибка моему приложению работать должным образом, я пытаюсь получить информацию из своей базы данных, и ничего не появляется. Обычно на странице отображается ошибка, когда разработчик Chrome также показывает ошибку. В этом случае ошибка ограничена вкладкой Chrome Developer. Поэтому мои данные, которые я пытаюсь найти в пожарном депо, не отображаются. Вот мой код

contact.ts

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

@Component({
  selector: 'page-contact',
  templateUrl: 'contact.html'
})
export class ContactPage {
  public dataJSON;
  public dataAux;

  constructor(public navCtrl: NavController,
    public alertCtrl: AlertController) {
     // afs.firestore.settings({ timestampsInSnapshots: true });
    let db = firebase.firestore();
    var auxint = 0;
    this.dataAux
    let auxString = '[';
    db.collection('teste').where("Deletado", "==", false).get().then(res => {
      res.forEach(item => {

        //pegue todos os dados do banco e crie um novo JSON com as informações de 
        auxint++;
        auxString += '{"id":"' + item.id + '","documento":' + JSON.stringify(item.data()) + '}';

        if (res.size != auxint)
          auxString += ', ';
      })
      auxString += ']';
      this.dataJSON = JSON.parse(auxString);

    }).catch(err => {
      console.log('Error: ' + err);
    });
  }
  doAlert(a: string) {
    const alert = this.alertCtrl.create({
      title: 'ID',
      subTitle: 'ID is: ' + a,
      buttons: [
        {
          text: 'Item has been deleted',
          handler: () => {
            let db = firebase.firestore();
            db.collection('teste').doc(a).update({ Deletado: true, DataUpdate: firebase.firestore.FieldValue.serverTimestamp() }).then(res => {
              const alert1 = this.alertCtrl.create({
                title: 'Deleted',
                subTitle: 'Youve deleted: ' + a,
                buttons: [
                  {
                    text: 'Deleted',
                    handler: () => {
                      location.reload();
                    }
                  }
                ]
              })
              alert1.present();
            }).catch(() => {
              console.log("An error occurred");
            })
          }
        },
        {
          text: 'Cancel',
          role: 'cancel',
          handler: () => {
            console.log('Buy clicked');
          }
        }
      ]
    });
    alert.present();
  }
}

contact.html

<ion-header>
  <ion-navbar>
    <ion-title>
      Consulta firebase
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content>
  <ion-list>
    <ion-list-header>Nomes armazenados do banco</ion-list-header>
    <ion-item>
      @ionicframework 
    </ion-item>
    <ion-item *ngFor="let data of dataJSON">
      <ion-icon name="ionic" item-start></ion-icon>

      <p>ID: {{data.id}}</p>
      <p>Data Criação: {{data.DataCriacao}}</p>
      <p>Data ultima atualizacao: {{data.DataUpdate}}</p>
      <p>Deletado: {{data.Deletado}}</p>
      <p>Nome: {{data.nome}}</p>
      <p>Numero: {{data.number}}</p>
      <button ion-button  block color="dark" (click)='doAlert(data.id)'>
        Alerta ID
      </button>
    </ion-item>
  </ion-list>

</ion-content>

1 Ответ

0 голосов
/ 20 сентября 2018

Проблема с этим вопросом была в этой строке auxString += '{"id":"' + item.id + '","documento":' + JSON.stringify(item.data()) + '}';, я забыл изменить текст моего документа на тот, который я использую для проверки моего запроса.

...