2016-10-11 11 views
3

firebaseデータベースの内容を最新の状態に戻そうとしています。NativeScript Angular 2 Firebaseリストが機能していません

何とか動作しません。私は、eddy verbruggenのfirebaseプラグインを使用しています。プラグインは動作していますが、リストに表示されません。

home.component.ts

import { Component, ElementRef, OnInit, ViewChild } from "@angular/core"; 
import firebase = require("nativescript-plugin-firebase"); 

@Component({ 
    selector: "home", 
    templateUrl: "pages/home/home.component.html" 
}) 
export class HomeComponent implements OnInit { 

    meting: Array<Object> = []; 

    ngOnInit() { 
    this.fbGetData(); 
    } 

    public onItemTap(args) { 
     console.log("------------------------ ItemTapped: " + args.index); 
    } 

    fbGetData(){ 
    var onChildEvent = (result) => { 
    console.log("Value: " + JSON.stringify(result.value)); // <-- works 
    this.meting.unshift(result.value); 
    }; 
    // listen to changes in the /users path 
    firebase.addChildEventListener(onChildEvent, "/user0").then(
    (listenerWrapper) => { 
     var path = listenerWrapper.path; 
     var listeners = listenerWrapper.listeners; // an Array of listeners added 
     // you can store the wrapper somewhere to later call 'removeEventListeners' 
    } 
); 
    } 
} 

home.component.html

<ListView [items]="meting" (itemTap)="onItemTap($event)"> 
    <template let-item="item" let-i="index" let-odd="odd" let-even="even"> 
     <StackLayout [class.odd]="odd" [class.even]="even"> 
      <Label [text]='"Week: " + i'></Label> 
      <Label [text]='"Gewicht: " + item.gewicht + ", Middel: " + item.middel + ", Heup: " + item.heup'></Label> 
     </StackLayout> 
    </template> 
</ListView> 

firebaseデータベース:

user0 
    week0 
     gewicht: 86 
     heup: 78 
     middel: 78 
    week1 
     gewicht: 85 
     heup: 76 
     middel: 74 

答えて

0

私は自分のプログラムであなたのfbGetData()機能を使用する場合、それは動作します。私はあなたがfirebaseにどのように新しいことがわかりませんが、私が最初にチェックするのはfirebaseコンソールのデータベースの下にルールタブです。ここでは、読み書きルールを入力する必要があります。文書at this firebase linkがあります。これらのルールの階層があります。それを理解することが重要です。これは簡単にあなたのコードをブロックしている可能性があります。

それをテストする方法は、以下にあなたのルールを設定することです:

{ 
    "rules": { 
    "user0": { 
     ".read": true, 
     ".write": true 
    } 
    } 
} 

これは読んで、あなたの「のUser0」ノードへの書き込みアクセス権を与えます。開発中にこのコードを使用したくない人は誰でもあなたのデータを読み書きできます。

ルートノードにアクセスするには、このようにルートノードに読み書きルールを追加するだけです。

{ 
    "rules": { 
    ".read": true, 
    ".write": true 
    } 
} 

この理由がわからない場合は、私にお知らせください。

関連する問題