我正在尝试使用Angular将Firebase数据库整合到我的Ionic应用程序中。我遵循的是AngularFire github页面(https://github.com/angular/angularfire2)上的说明,但是当我实际运行该应用程序时,我一直收到空响应。我也对db.object方法(db.object('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
答案 0 :(得分:0)
您好,基兰,欢迎您来。您对提供的信息太多了,但是安全而不是后悔-对吗?
在示例中,您正在查看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