База данных Firebase Realtime Ionic, возвращающая ноль - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь включить базу данных Firebase в свое приложение Ionic, используя Angular.Я следовал инструкциям, изложенным на странице AngularFire github (https://github.com/angular/angularfire2), но когда я фактически запускаю приложение, я получаю нулевой ответ. Я также путаюсь с вводом метода db.object (db.object ('item')). Что на самом деле представляет "item"?

Это мой файл app.component.ts

import { Component } from '@angular/core';
import { Platform } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { MenuController } from '@ionic/angular';
import { AngularFireDatabase } from '@angular/fire/database';
import { Observable } from 'rxjs';


@Component({
  selector: 'app-root',
  templateUrl: 'app.component.html'
})
export class AppComponent {

item: Observable<any>;
example: Observable<any>;

  constructor(
    private platform: Platform,
    private splashScreen: SplashScreen,
    private statusBar: StatusBar,
    private menu: MenuController,
    private db: AngularFireDatabase
  ){
    this.item = db.object('item').valueChanges();
    this.initializeApp();
  }



  initializeApp() {
    this.platform.ready().then(() => {
      this.statusBar.styleDefault();
      this.splashScreen.hide();
    });
  }

  close(){
    this.menu.close();
  }
}

Это мой файл app.component.html

<ion-app>
    <ion-menu side="start" menuId="first">
      <ion-header>
        <ion-toolbar color="primary">
          <ion-title>Hi</ion-title>
        </ion-toolbar>
      </ion-header>
      <ion-content>
        <ion-list>
          <ion-item [routerLink]="['/orders']" routerLinkActive="active" (click)="close()" >My Orders</ion-item>
          <ion-item [routerLink]="['/apps']" routerLinkActive="active" (click)="close()">My</ion-item>
          <ion-item [routerLink]="['/pres']" routerLinkActive="active" (click)="close()">My</ion-item>
          <ion-item>{{ (item | async)?.name }}</ion-item>
        </ion-list>
        <li class="text" *ngFor="let item of items | async">
            {{ item | json }}
        </li>
      </ion-content>
    </ion-menu>
    <ion-router-outlet main></ion-router-outlet>
</ion-app>

Это мой файл app.module.ts

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { FormsModule } from '@angular/forms';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { AngularFireModule } from '@angular/fire';
import { environment } from '../environments/environment';
import { AngularFirestoreModule } from '@angular/fire/firestore';
import { AngularFireDatabaseModule } from '@angular/fire/database';
import { AngularFireAuthModule } from '@angular/fire/auth';




@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [BrowserModule, FormsModule, IonicModule.forRoot(), AppRoutingModule, AngularFireModule.initializeApp(environment.firebase), AngularFireDatabaseModule, AngularFireAuthModule],
  providers: [
    StatusBar,
    GooglePlus,
    SplashScreen,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

Изображение моей базы данных Firebase. Это то, что видно под именем моего приложения: https://pasteboard.co/HTxY5eC.png

1 Ответ

0 голосов
/ 26 декабря 2018

Привет Киран и добро пожаловать в ТАК.Вы перебрали слишком много информации, которую предоставили, но скорее будьте в безопасности, чем извините - верно?

В приведенном примере item является узлом в базе данных.Я так понимаю, вы также довольно новичок в Firebase, так что я не буду ничего предполагать .... Вы уже играли с консолью Firebase?(https://console.firebase.google.com/project/PROJECT_NAME/database/PROJECT_NAME/data) Представление, которое позволяет вам видеть содержимое вашей базы данных в реальном времени? Поиграйте туда и добавьте несколько «узлов» в базу данных. Они имеют хорошо скоординированные цвета для того, когда вы добавляете, редактируете,и удалять данные ... довольно круто, верно? Теперь сотрите свои тестовые узлы и создайте узел с именем "item", и добавьте несколько дочерних узлов.

В вашем коде this.item = db.object('item').valueChanges(); слушает изменения винформация хранится в узле item вашей базы данных ... и помещается в переменную this.item. Ваш HTML-файл перебирает любое содержимое переменной this.item и отображает ее с помощью *ngFor="let item of items | async

Короче говоря, ваш оригинальный вопрос ... item не является чем-то особенным - сделайте это так, как вы называете свой узел базы данных. Вы получаете null, потому что сейчас у вас отсутствует узел в вашей БД с соответствующимимя item

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