Felipe de Jesús Víctor Arceo
Lo que me funcionó con Angular 7
return this.http.get(this.API_ENDPOINT+'/.json').pipe( map( resultado => resultado['lugares'] ) );
Hoy 02 de junio 2018. código para que funcione map en angular5
como importo **map **de rxjs
import { map } from 'rxjs/operators'
como se usa
return this.http.get(this.API_ENDPINT+'/.json') .pipe(map((resultado)=>{ const data = resultado.json().lugares return data }) )
aquí el código completo
import { Injectable } from "@angular/core" import { AngularFireDatabase } from'angularfire2/database'; import {Http, Headers} from "@angular/http" import { map } from 'rxjs/operators' @Injectable() export class LugaresService{ API_ENDPINT = 'https://platzisquare-18656.firebaseio.com' lugares:any = [] constructor(private afDB: AngularFireDatabase, private http: Http) { } public getLugares(){ //return this.afDB.list('lugares') return this.http.get(this.API_ENDPINT+'/.json') .pipe(map((resultado)=>{ const data = resultado.json().lugares return data }) ) } public buscarLugar(id){ return this.lugares.filter((lugar) => { return lugar.id == id})[0] || null } public guardarLugar(lugar){ //this.afDB.database.ref('lugares/'+lugar.id).set(lugar) const headers = new Headers({'Content-Type':'application/json'}) return this.http.post(this.API_ENDPINT+'/lugares.json',lugar,{headers:headers}).subscribe() } public editarLugar(lugar){ this.afDB.database.ref('lugares/'+lugar.id).set(lugar) } public obtenerGeoData(direccion){ return this.http.get('http://maps.google.com/maps/api/geocode/json?address='+direccion); } public getLugar(id){ return this.afDB.object('lugares/'+id); } }
Felipe de Jesús Víctor Arceo
Lo que me funcionó con Angular 7
return this.http.get(this.API_ENDPOINT+'/.json').pipe( map( resultado => resultado['lugares'] ) );
Juan Carlos Ortiz Huamán
para aquellos que les de el error de que json() no es un object, y no puedan acceder a lugares
public getAllFirebase(){ return this.http.get(this.API_ENDPOINT+'/.json') .map((resultado) => { debugger; return resultado['lugares']; }); }
Henry Tabima Giraldo
Para pasar de un Object a un Array se puede usar
this.lugares = Object.values(res)
Cristhian Tarazona
Ahora el problema es en editar no esta mostrando lo valores solo me muestra aquellos que se registraron antes de la modificación de guardar.
Alejandro Valenzuela
hola, pudiste solucionarlo?
Maria de los Angeles Silva Gutierrez
yo trabajo con angular 8 import { map } from "rxjs/operators";
lugares.service.ts public getLugares(){ //Metodo Get return this.http.get(this.API_ENDPOINT+'/.json') .pipe(map((resultado) =>{ const data = resultado.json().lugares; return data; })) }
lugares.component.ts constructor(private lugaresService: LugaresService){ lugaresService.getLugares().subscribe(lugares =>{ this.lugares = lugares; var me = this; me.lugares = Object.keys(me.lugares).map(function (key) { return me.lugares [key]; }); //debugger; // para ver si llega el array }); }
Yomar Esteban Miranda Sarmiento
Hoy 30 Junio del 2018, para que map() funcione se debe hacer de la siguiente manera:
PD: Estoy utilizando Angular 6.
A la hora de realizar el import es la siguiente:
import { map } from 'rxjs/operators';
Para que les pueda funcionar deben de hacerlo de la siguiente forma:
public getLugares(){ return this.http.get(this.API_ENDPOINT+'/.json') .pipe(map((resultado) => { const data = resultado.json().lugares; return data; })) }
Francisco Manuel Velásquez Escobar
Funcionó, gracias!
Cristian Palta
buenas clases
Víctor Hugo Rivas Sánchez
Solucion en getLugares con mapa:
public getLugares() { return this.http.get(this.API_ENDPOINT + '/.json') .map(resultado => resultado['lugares']); }
Carlos Uriel de Jesus Sánchez González
public getLugares(){ returnthis.http.get(this.API_ENDPOINT+'/.json') .pipe(map((resultado) => { const data = resultado.json().lugares; return data; })) }
ARTURO CASTRO RAMÍREZ
Al importar
import 'rxjs/add/operator/map'
me marca un error y ademas no me identifica el .map
Demian Arenas
Hola arcara, si la versión de tu rxjs es la 6 entonces tu problema es que hubo varios cambios es la librería, para importar los operadores ahora debes escribir
import { map } from 'rxjs/operators';
Bruno Belisario Tijero Tolentino
Ninguna de las soluciones que pusieron me funcionó. Modifiqué un poco los códigos y listo:
import {map} from 'rxjs/operators';
public getLugares() { //return this.afDB.list('listados/').valueChanges(); return this.http.get(this.API_ENDPOINT + '/listados.json').pipe(map((resultado) => { return Object.values(resultado); })); }
Jovanny Hernandez
lugares.service.ts
public getLugares() { return this.http.get(this.API_ENDPOINT + '/.json') .pipe(map(resultado => resultado['lugares'])); }
lugares.component.ts
constructor(private lugaresService: LugaresService) { this.lugaresService.getLugares() .subscribe( lugares => { this.lugares = Object.values(lugares) }); }