• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

AngularFire CRUD

Object Storage Arubacloud
0 głosów
210 wizyt
pytanie zadane 22 maja 2018 w JavaScript przez Alex.Ironside Stary wyjadacz (14,900 p.)

Witam. Probuje zburodwac CRUD do AngularFire. Plik items-list.component.ts:

import {Component, OnInit} from '@angular/core';
import {FirebaseListObservable, FirebaseObjectObservable, AngularFireDatabase} from 'angularfire2/database-deprecated';
import {Item} from '../shared/item';
import {ItemService} from '../shared/item.service';

@Component({
  selector: 'app-items-list',
  templateUrl: './items-list.component.html',
  styleUrls: ['./items-list.component.scss']
})
export class ItemsListComponent implements OnInit {

  public items: FirebaseListObservable<any[]>;

  constructor(public itemSvc: ItemService) {
  }

  ngOnInit() {
    this.items = this.itemSvc.getItemsList({limitToLast: 10});
  }

  deleteItems() {
    this.itemSvc.deleteAll();
  }
}

// export class ItemsListComponent {
// }

Plik items-list.component.html:

<div *ngFor="let item of items | async">
  <app-item-detail [item]='item'></app-item-detail>
</div>
<!--<button (click)='deleteItems()'>Delete Entire List</button>-->

Plik item.service.ts:

import {Injectable} from '@angular/core';
import {FirebaseListObservable, FirebaseObjectObservable, AngularFireDatabase} from 'angularfire2/database-deprecated';
import {Item} from './item';

@Injectable()
export class ItemService {

  private basePath: '/items';

  items: FirebaseListObservable<any[]> = null; //  list of objects
  item: FirebaseObjectObservable<any> = null; //   single object

  constructor(private db: AngularFireDatabase) {
  }

  getItemsList(query = {}): FirebaseListObservable<any[]> {
    this.items = this.db.list(this.basePath, {
      query: query
    });
    return this.items;
  }

  // Return a single observable item
  getItem(key: string): FirebaseObjectObservable<Item> {
    const itemPath = `${this.basePath}/${key}`;
    this.item = this.db.object(itemPath);
    return this.item;
  }

  createItem(item: Item): void {
    this.items.push(item);
    // .catch(error => this.handleError(error));
  }


  // Update an existing item
  updateItem(key: string, value: any): void {
    this.items.update(key, value)
      .catch(error => this.handleError(error));
  }

  // Deletes a single item
  deleteItem(key: string): void {
    this.items.remove(key)
      .catch(error => this.handleError(error));
  }

  // Deletes the entire list of items
  deleteAll(): void {
    this.items.remove()
      .catch(error => this.handleError(error));
  }

  // Default error handling for all actions
  private handleError(error) {
    console.log(error);
  }
}

Wiec tak. Na razie usiluje wypisac po prostu 10 elementow z bazy. Niestety Angular wywala blad: ERROR Error: "[object Object]". Swietny blad swoja droga.

Blad jest wyrzucany w momencie deklarowania konstruktora w items-list.compoment.ts. Wykomentowywalem kod az doszedlem do tego. Ale nie mam pojecia co jeszcze moze isc nie tak. Jakies pomysly?

1 odpowiedź

0 głosów
odpowiedź 22 maja 2018 przez zgrybus Pasjonat (24,860 p.)
private basePath: '/items';

Ogólnie to nie ma sensu w twoim przypadku :)

 

Ogólnie te zapytania do bazy nie są asynchroniczne? Jeśli tak to masz następny babol związany z pobieraniem / wysyłaniem danych.

komentarz 23 maja 2018 przez Alex.Ironside Stary wyjadacz (14,900 p.)
Szczerze to dalem sobie spokoj z Angularem. I tak go nie pojmuje. Sprobuje ogarnac podstawy Reacta i podejsc od tej strony
komentarz 23 maja 2018 przez zgrybus Pasjonat (24,860 p.)
Hmm.. ale czemu? Po prostu źle zainicjowałeś zmienną w typescript :)
Ogólnie asynchroniczność to nie jest problem związany z angularem a raczej z językiem Javascript.
* nie jest to problem - asynchroniczność ratuje pupę
komentarz 23 maja 2018 przez Alex.Ironside Stary wyjadacz (14,900 p.)
Nie podoba mi sie Angular. Moduly sa zmieniane co wersje, kazdy tutorial jest po 2 mcach przestarzaly... Od poczatku to byla droga przez meke. Sprobuje React. Wydaje sie bardziej pode mnie
komentarz 23 maja 2018 przez zgrybus Pasjonat (24,860 p.)
Yyy.. czemu? Przecież jedna wielka zmiana tak naprawdę była tylko pomiędzy 2 a 4. Każdy tutorial zaczynający się od wersji 4 jest "na topie", bo zmiany tak naprawdę w nowych wersjach są w "podziemiach kodu".
Może po prostu nie rozumiesz typescripta i przez to uważasz całego angulara za zło konieczne :)
komentarz 23 maja 2018 przez Alex.Ironside Stary wyjadacz (14,900 p.)
Wiesz. Robilem kurs Angulara z roku 2017. Okazalo sie ze jakis modol pozmianial sciezki do importow 3 razy. I trzeba szukac na StackOverflow, w changelogach itd. Poza tymi modulami do Angulara nic nie mam.
komentarz 23 maja 2018 przez zgrybus Pasjonat (24,860 p.)
Yyy.. jaki moduł? Z tego co pamiętam dodali moduł HttpClient oraz BrowserAnimation, nic innego raczej nie zmieniali
komentarz 24 maja 2018 przez Alex.Ironside Stary wyjadacz (14,900 p.)
W AngularFire. Sporo tego pozmianiali w pare mcy z tego co widzialem
komentarz 24 maja 2018 przez zgrybus Pasjonat (24,860 p.)
Ale to już nie powinieneś mieć problemu do samego angulara. Przecież oni nie mają wpływu na wersje "trzecich-modułów".
komentarz 24 maja 2018 przez Alex.Ironside Stary wyjadacz (14,900 p.)
Wiem wiem. Ale irytacja zostaje. Po prostu jakos mi nie podchodzi.
komentarz 24 maja 2018 przez zgrybus Pasjonat (24,860 p.)
Spoko :)

Podobne pytania

0 głosów
1 odpowiedź 163 wizyt
pytanie zadane 20 czerwca 2018 w Java przez Radek Begej Użytkownik (580 p.)
0 głosów
0 odpowiedzi 155 wizyt
pytanie zadane 22 kwietnia 2018 w PHP przez Vinchit Obywatel (1,040 p.)
0 głosów
1 odpowiedź 218 wizyt
pytanie zadane 19 kwietnia 2018 w PHP przez Vinchit Obywatel (1,040 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...