listview - NativeScript Angular 2 Firebase 列表不起作用

标签 listview angular firebase firebase-realtime-database nativescript

尝试获取包含我的 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>

火力数据库:

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

最佳答案

当我在我自己的程序中使用您的fbGetData() 函数时,它起作用了。我不确定您对 firebase 有多陌生,但我首先要检查的是在数据库下的 firebase 控制台中有一个规则选项卡。在这里你必须输入读写规则。您可以找到文档 at this firebase link .这些规则有一个层次结构。所以理解它们很重要。这很容易成为阻止您的代码的原因。

测试它的一种方法是将您的规则设置为以下内容:

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

这将为您的“user0”节点提供读写访问权限。您不想在开发中使用此代码,因为任何人都可以读取或覆盖您的数据。

要访问根节点,只需像这样将您的读写规则添加到根节点即可。

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

如果不是因为这个原因,请告诉我。

关于listview - NativeScript Angular 2 Firebase 列表不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39983147/

相关文章:

c# - ListView 不刷新其项目

java - 如何设置可扩展大小的数组以防止空指针异常?

angular - 在 'http://localhost:8080 from origin ' http ://localhost:4200' has been blocked by CORS policy 访问 XMLHttpRequest

java - Android Room 相对于 Cloud Firestore 在持久本地存储方面的优势是什么?

android - 如何在Android上获取带轮播滚动的ListView?

android - Spinners 选择在添加新项目或滚动 ListView android 时发生变化

javascript - 无法使用构造函数填充 FormData

angular - 您如何使用 MSAL-ANGULAR 读取角色/权限

android - 如何获取 firebase 数据库的实时更新?

ios - 如何根据segmentedControl的选定索引更改刷新器的功能