2017-07-21 9 views
2

とキーで項目を除外:は、私がこのJSONとFirebaseデータベースを持っているAngularfire2

"help_text": [{ 
      "Name": "Blue Dye", 
      "Max Stack": 5, 
      "Potion Quantity": 1, 
      "Price": 10, 
      "Stackable": true 
     }, 
     { 
      "Name": "Blue Gem", 
      "Max Stack": 20, 
      "Price": 200, 
      "Quest Item": true, 
      "Stackable": true 
     }, 
     { 
      "Name": "Blue Gem Fragment", 
      "Max Stack": 20, 
      "Price": 50, 
      "Quest Item": true, 
      "Stackable": true 
     }, 
     { 
      "Name": "Blue Flower", 
      "Max Stack": 20, 
      "Mesh Y": -0, 
      "Model": "blue_flower", 
      "Price": 5, 
      "Stackable": true 
     } 
    ...etc etc... 

私は出力にリスト項目としてヘッダおよび個々の項目としてNameフィールド角度4を使用しています:

をapp.help画面component.html

<div class="help-item-box" *ngFor="let item of items | async"> 
    <h2 class="help-item-title">{{item.Name}}</h2> 
    <ul class="help-item-properties"> 
    <li *ngIf="item['Potion Quantity']">Potion Quantity: {{ item["Potion Quantity"] }}</li> 
    <li *ngIf="item.Price">Price: {{ item.Price }}</li> 
    <li *ngIf="item.Stackable">Stackable: {{ item.Stackable }}</li> 
    <li *ngIf="item['Quest Item']">Quest Item: {{ item["Quest Item"] }}</li> 
    <li *ngIf="item['Max Stack']">Max Stack: {{ item["Max Stack"] }}</li> 
    </ul> 
</div> 

アプリ - ヘルプscreen.component.ts

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

@Component({ 
    selector: 'app-help-screen', 
    templateUrl: './app-help-screen.component.html', 
    styleUrls: ['./app-help-screen.component.css'] 
}) 
export class HelpScreenComponent implements OnInit { 
    items: FirebaseListObservable<any[]>; 

    constructor(db: AngularFireDatabase) { 
    this.items = db.list('help_text'); 
    console.log(this.items); 
    } 

    ngOnInit() { 
    } 

} 

これは動作しますが、それは非常にエレガントではありませんし、データベース・コードは、新しいプロパティを持つオブジェクトが追加されるたびに書き換えなければならないであろうことを意味します。私が理想的にやってみたいのは、名前、モデル名、メッシュの配置値を除いて、すべてのフィールドをリスト項目として出力することです。 Angularfire2のドキュメントを見て:

https://github.com/angular/angularfire2/blob/master/docs/4-querying-lists.md

キーによってクエリから項目を除外するための方法があるようには思えません。確かにFirebaseとAngularfire2を使ってこのような基本的なクエリを実行する方法がなければなりませんか?

答えて

1

Firebaseは、クエリでこれを実行しようとしている場合、除外をサポートしていません。フィールドを除外する場合は、別々のコレクションを作成する必要があります。

あなたのケースでは、私が達成したいと思っているものをはるかに簡単な解決策があります。ビューの中でObject.keys(item)のすべてを繰り返して、キーと値が表示されます(キーが名前でない限り)。

+0

if? Object.keysのセットをフィルタリングしますか? –

+0

私は除外の意味を誤解していますか? –

+0

これは事実上正確ですが、ひどい答えです。私がそれを受け入れなければならない手紙のことで、仕事の状態についての悲しいコメントです。 –

関連する問題