저는 현재 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;
}
}
를 사용하는 것 같습니다 문제는, 그 $ 키가 정의되지 않은 나는 궁금해서, 어떻게 열쇠를 포함하여 개체를 반환하는 목록 - 메서드를 얻을거야. 잠시 동안 노력했지만 오류를 찾을 수 없습니다. 누군가 대답을 알면 기쁠 것입니다.
[편집]
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