私は現在、googles firebaseで何かを構築しようとしています。問題を見つけました。それは firebaseデータベースでIDを取得する
(少なくとも、それはそれは私が読んチュートリアルでやったことだ)あなたのデータベース内のオブジェクトのキーとして$キーを持つオブジェクトを与えるために使用されるコードのこのスニペットがexport class FirebaseService {
items: Observable<Item[]>;
constructor(private db: AngularFireDatabase){
}
getBusinesses(){
this.businesses = this.db.list('/items').valueChanges() as Observable<Item[]>
return this.items;
}
}
ようです問題は、$キーが定義されていないと、私はキーを含むオブジェクトを返すlistメソッドを取得する方法、私は不思議だった。しばらくの間、試してみましたが、私は本当にエラーを見つけることはできません。誰かが答えを知っていたらうれしいです。
[編集]
https://github.com/angular/angularfire2/blob/master/docs/version-5-upgrade.md これは私の解決策に少し近づけます。バージョン5.0.0では、angularfire2に大きな変更が加えられているようです。しかし、私はまだ学んでいるので、私は実際に自分のコードにそれを統合することはできません。現時点ではこの
firebase.service.ts
import { Injectable } from '@angular/core';
import { AngularFireModule } from 'angularfire2';
import { AngularFireDatabase, AngularFireDatabaseModule } from 'angularfire2/database';
import { FirebaseListObservable } from 'angularfire2/database-deprecated';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import {Business} from '../Business';
import {Category} from '../Category';
@Injectable()
export class FirebaseService {
businesses : Observable<Business[]>;
categories : Observable<Category[]>;
constructor(private db: AngularFireDatabase){
}
getBusinesses(){
this.businesses = this.db.object('/businesses').snapshotChanges().map(action => {
console.log('ACTION:');
console.log(action);
const $key = action.payload.key;
const data = {$key, ...action.payload.val()};
return data;
}) as Observable<Business[]>;
return this.businesses;
}
}
のように見え、
import { Component, OnInit } from '@angular/core';
import { AngularFireDatabase } from 'angularfire2/database';
import { Observable } from 'rxjs/Observable';
import { FirebaseService } from './services/firebase.service';
import { Business } from './Business';
import { Category } from './Category';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app';
items: Observable<any[]>;
businesses: Business[];
categories: Category[];
appState: string;
activeKey: string;
constructor(private _firebaseService: FirebaseService){
}
ngOnInit(){
this._firebaseService.getBusinesses().subscribe(businesses => {
console.log('Businesses:');
console.log(businesses);
this.businesses = businesses;
});
}
}
私はそれがあった望んだとして今私の結果ではありませんがapp.component.ts。基本的には私が戻ってくるのは
{
0: {
Key01: "xyz",
Key02: "yyy"
},
1: {
Key11: "zyx",
Key12: "zzz"
},
$key: "businesses"
}
私は試し続けます。たぶんあなたは私が間違っていることを知っているかもしれない。助けてくれてありがとう今のところ
[/編集]あなたがFirebaseListObservable<Item[]>
などの項目を宣言し、(getBusinessesを行う必要があり
.object()で.list()を置き換えれば、残念ながらそのオブジェクトを取得することができます(したがって、そのキーは – Wandrille
)。キーなしでオブジェクトを取得しています – Chris