如何使用Firebase在Ionic 3中通过参数检索数据

时间:2018-03-24 09:18:28

标签: javascript angular firebase firebase-realtime-database ionic3

我在Firebase上有一个实时数据库,我想使用参数从这个数据库中检索记录。

Here is the screeshot from that

例如,在您看到的层次结构中,我想使用uID值获取数据。我怎么能这样做?

更新

https://javebratt.com/firebase-objects-ionic-2-app/

我已尝试过标题"阅读Firebase数据"在我给出的链接上的文章中,但如果是为Ionic 2编写的,我不知道如何更新代码。

这是我写的代码,

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { Post } from '../../models/models/post';
import { AngularFireDatabase } from 'angularfire2/database';
import { Storage } from '@ionic/storage';

@IonicPage()
@Component({
  selector: 'page-profile',
  templateUrl: 'profile.html',
})

export class ProfilePage {

  public posts: Post[];
  public uID: string;

  constructor(public navCtrl: NavController,
    public navParams: NavParams,
    private db: AngularFireDatabase,
    private storage: Storage) {

    this.storage.get('uID').then((val) => {
      console.log('uID: ' + val);
      this.uID = val;
      console.log('this.uID: ' + this.uID);

      this.db.list<Post>('/Post/',
        ref => ref.orderByChild('uID').equalTo(this.uID)).valueChanges().subscribe(t => {
          this.posts = t;
        })
    });

  }

  ionViewDidLoad() {
    console.log('ionViewDidLoad ProfilePage');
  }

}

根据文章,我必须创建一个类型为&#34; Reference&#34;的变量,但是使用AngularFireDatabase,不可能做出这样的定义。

如何在Ionic 3中更新此定义?

更新

我添加了一些代码;

db.database.ref('/User/').on('value', res => {
      console.log("Try Val: " + res.val)
      console.log("Try Key: " + res.key)
      console.log("Try Child: " + res.child)
    });

输出;

Try Val: function () {
        util_1.validateArgCount('DataSnapshot.val', 0, 0, arguments.length);
        return this.node_.val();
    }
Try Key: User
Try Child: function (childPathString) {
        util_1.validateArgCount('DataSnapshot.child', 0, 1, arguments.length);
        // Ensure the childPath is a string (can be a number)
        childPathString = String(childPathString);
        validation_1.validatePathString('DataSnapshot.child', 1, childPathString, false);
        var childPath = new Path_1.Path(childPathString);
        var childRef = this.ref_.child(childPath);
        return new DataSnapshot(this.node_.getChild(childPath), childRef, PriorityIndex_1.PRIORITY_INDEX);
    }

更新

我可以获得数据,但答案并不清楚。

Firebase使用键值记录所有数据。我还在&#34; / Post /&#34;之后添加了这个键值。 value作为数据路径。例如&#34; / Post / -1ersksnu0nsw1 /&#34;。

这是代码;

 db.database.ref('/User/-L88gtymS5pS3KWtZrmI').on('value', res => {
      console.log(res.val().email)
    });

我可以获得真正的价值,但我仍然不知道如何根据他们的记录列来做到这一点。

2 个答案:

答案 0 :(得分:0)

您可以结帐tutorial。它创建了一个聊天应用程序,但它可以帮助您实现您想要的目标。

rds_files <- paste0("C://mypath//file", 1:10, ".rds")

答案 1 :(得分:0)

EUREKA!

db.database.ref('/User/').orderByChild('uID').equalTo(this.uID).once('value', (snapshot) => {
   console.log(snapshot.val().email)
})

此代码将执行此操作。