Ionic Как передать переменную в метод firebase equalTo - PullRequest
0 голосов
/ 10 марта 2019

Мне уже удалось получить данные из формы firebase.problem, когда я собираюсь фильтровать данные по идентификатору, он не работает.

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { AngularFireDatabase, AngularFireList ,} from 'angularfire2/database';

import { Observable } from 'rxjs'
import { query } from '@angular/core/src/render3';
import { Key } from 'protractor';


class postview {
  constructor(public title) { }
}

@Component({
  selector: 'app-news-view',
  templateUrl: './news-view.page.html',
  styleUrls: ['./news-view.page.scss'],
})
export class NewsViewPage implements OnInit {

  id: string;



  public books: AngularFireList<postview[]>;
  itemlol: Observable<any>;
  posts: Observable<any[]>;

    constructor(private route: ActivatedRoute  , db: AngularFireDatabase) {
      let idp :string = this.id;
      this.posts = db.list('Posts' ,ref => {
        return ref.orderByChild('Post_Id').equalTo(idp)       
            }).valueChanges();

           // this.itemlol= db.object('Posts').valueChanges();
      }


  ngOnInit() {
    this.id = this.route.snapshot.paramMap.get('id');



    console.log(this.id);

    console.log(this.posts);


  }



}

в разделе return ref.orderByChild('Post_Id').equalTo(idp) Мне нужнопередать переменную в equalTo().Он должен измениться в соответствии с инструкциями пользователя

Пример

equalTo(01)
equalTo(02)

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

This is my firebase database

1 Ответ

0 голосов
/ 10 марта 2019

Конструктор вызывается перед ngOnInit, поэтому значение this.id будет неопределенным во время запроса.

Вы должны получить параметры в конструкторе

 this.id = this.route.snapshot.paramMap.get('id');
 let idp :string = this.id;
 this.posts = db.list('Posts' ,ref =>  ref.orderByChild('Post_Id').equalTo(idp)     ).valueChanges();
...