Как получить объект из базы данных, используя его ключ? - PullRequest
0 голосов
/ 24 апреля 2019

Я хочу получить объект из базы данных, используя его ключ, но он не работает.

Вот моя база данных:

БАЗА ДАННЫХ

БАЗА ДАННЫХ:

...
 - toc-list
           |___ id1 (generated by firebase)
                  |___ field1
                  |___ field2

           |___ id2 (generated by firebase)
                  |___ field1
                  |___ field2

           |___ id3 (generated by firebase)
                  |___ field1
                  |___ field2

Я пытаюсь получить объект из toc-list, используя id1 "-Ld6AAdHn6JBYcrh29Xz"

Я пытался получить это так, но это не работает:

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';

import firebase from 'firebase';
import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';

@IonicPage()
@Component({
  selector: 'page-confrontation-1',
  templateUrl: 'confrontation-1.html',
})
export class Confrontation_1Page {

  toc_id : string;
  public toc: Array<any> = [];
  public tocRef: firebase.database.Reference = firebase.database().ref('/toc-list');

  constructor(public navCtrl: NavController, public navParams: NavParams, public afDB: AngularFireDatabase) {
    this.toc_id = navParams.get('tocId');
  }

  ionViewDidLoad() {
    console.log('ionViewDidLoad Confrontation_1Page');

    // I want to show the details of the element that has the id : toc_id
    console.log(this.afDB.object('/toc-list/' + this.toc_id));

  }


}

1 Ответ

1 голос
/ 24 апреля 2019

Наблюдаемые являются асинхронными, и вы должны подписаться на него. Попробуйте:

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';

import firebase from 'firebase';
import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';

@IonicPage()
@Component({
  selector: 'page-confrontation-1',
  templateUrl: 'confrontation-1.html',
})
export class Confrontation_1Page {

  toc_id : string;
  public toc: Array<any> = [];
  public tocRef: firebase.database.Reference = firebase.database().ref('/toc-list');

  constructor(public navCtrl: NavController, public navParams: NavParams, public afDB: AngularFireDatabase) {
    this.toc_id = navParams.get('tocId');
    this.afDB.object('/toc-list/' + this.toc_id).valueChanges().subscribe(res => console.log(res))
  }

  ionViewDidLeave() {
    this.afDB.object('/toc-list/' + this.toc_id).valueChanges().unsubscribe();
  }


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