#listview #angular #firebase #firebase-realtime-database #nativescript
#listview #angular #firebase #firebase-база данных в реальном времени #nativescript
Вопрос:
Пытаюсь обновить список с содержимым моей базы данных firebase.
Почему-то это не работает, я использую плагин firebase от eddy verbruggen. Плагин работает, но я не могу отобразить его в списке.
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
Ответ №1:
Когда я использую вашу fbGetData()
функцию в своей собственной программе, она работает. Я не уверен, насколько вы новичок в firebase, но первое, что я бы проверил, это то, что в консоли firebase в разделе database есть вкладка правил. Здесь вам нужно ввести правила чтения и записи. Вы можете найти документацию по этой ссылке firebase. для этих правил существует иерархия. Поэтому важно их понимать. Это может легко быть тем, что блокирует ваш код.
способ проверить это — установить для ваших правил следующее:
{
"rules": {
"user0": {
".read": true,
".write": true
}
}
}
Это предоставит доступ для чтения и записи к вашему узлу «user0». Вы не хотите использовать этот код в разработке, в то время как любой может читать или записывать ваши данные.
для доступа к корневому узлу просто добавьте свои правила чтения и записи в корневой узел следующим образом.
{
"rules": {
".read": true,
".write": true
}
}
Если не по этой причине, дайте мне знать.