如何在angularfire2中查询

时间:2019-02-09 18:24:42

标签: angular firebase

在我的项目中使用angularfire时,我不知道该怎么写才能获得波纹管名称 MY BD

我真的需要帮助,我想要查询,该查询可以将name =“ om”项的键还给我,例如,谢谢!

1 个答案:

答案 0 :(得分:0)

您要在此处执行的操作是 Query Lists 。只需看一下文档,您就应该走了。

这是一个入门的简单示例:

import { Component } from '@angular/core';
import { AngularFireDatabase } from '@angular/fire/database';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  users;

  constructor(private db: AngularFireDatabase) {}

  ngOnInit() {
    this.db.list('/Users', ref => ref.orderByChild('name').equalTo('Om'))
      .snapshotChanges()
      .subscribe((snapshot: any) => this.users = snapshot.map(snap => ({ ...snap })));
  }

}

在模板中:

<pre>{{ users | json }}</pre>

这将返回一个数组。因此,如果只需要一项,则必须确保要查询的字段是唯一的。

此外,这种查询将把所有数据下载到客户端上。因此,您会得到警告:

  

@ firebase /数据库:   FIREBASE警告:使用未指定的索引。您的数据将在客户端上下载并过滤。考虑将/ Users处的“ .indexOn”:“ name”添加到安全规则中,以提高性能。

要解决此问题,请像这样更新您的安全规则:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null",
    "Users": {
      ".indexOn": [
        "name"
      ]
    }
  }
}

  

这是您推荐的Working Sample StackBlitz