J'ai suivi la documentation ici à Obtenez des données avec un identifiant de document de FireStore.
import { Injectable } from '@angular/core'; import { AngularFirestore, AngularFirestoreCollection } from '@angular/fire/firestore'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import 'rxjs/add/operator/map'; @Injectable() export class UserService { userCol : AngularFirestoreCollection<UserInter>; users : Observable<UserInter[]>; constructor(private afs:AngularFirestore) { } GetUsers(){ this.userCol = this.afs.collection<UserInter>('users'); this.users = this.userCol.snapshotChanges().pipe( map(changes =>{ error here-> return changes.map(a => { const data = a.payload.doc.data() as UserInter; data.id = a.payload.doc.id; return data; }) })) return this.users; } export interface UserInter { email ?: string, Firstname ?: string, Lastname ?: string, Address ?: string, } export interface UserInterid extends UserInter {id ?: string }
3 Réponses :
GetUsers(){ this.userCol = this.afs.collection<UserInter>('users'); this.users = this.userCol.stateChanges(['added']).pipe( map(changes =>{ return changes.map(a => { const data = a.payload.doc.data() as UserInter; data.id = a.payload.doc.id; return data; }) })) return this.users; }
Commentaire Les modifications, il est difficile de faire une diffusée de code non surligné. Seul le paramètre statChanges code> a changé?
J'ai essayé cela mais ça n'a pas fonctionné. Je reçois toujours la même erreur.
Vous devrez ajouter en outre: importer {mappe} de 'rxjs / opérateurs'; code>
@JoelJoseph oui j'ai ajouté importer {carte} de 'rxjs / opérateurs'; code>
Pouvez-vous essayer avec celui-ci
J'ai corrigé cette erreur en utilisant l'opérateur de carte sans tuyau. Ce code fonctionne
import { Injectable } from '@angular/core'; import { AngularFireAuth } from 'angularfire2/auth'; import { AngularFirestore, AngularFirestoreCollection } from '@angular/fire/firestore'; import { Observable } from 'rxjs'; import 'rxjs/add/operator/map'; @Injectable() export class UserService { uid; userCol : AngularFirestoreCollection<UserInter>; users : Observable<any>; constructor(private Uauth:AngularFireAuth, private afs:AngularFirestore) { } GetUsers(){ this.userCol = this.afs.collection('users'); this.users = this.userCol.snapshotChanges() .map(action => { return action.map(a => { const data = a.payload.doc.data() as UserInter; const id = a.payload.doc.id; return {id, data }; }) }) return this.users; } } export interface UserInter { email ?: string, pass ?: string, Rpass ?: string, Firstname ?: string, Lastname ?: string, Society ?: string, Landmark ?: string, Address ?: string, PrimaryNo ?: string, SecondaryNo ?: string, ExpiryDate ?: Date, Orders ?: string, } export interface UserInterid extends UserInter {id ?: string }
Pouvez-vous vous connecter
modifier code> et voir ce qu'il contient? Essayez également de taper les modifications code> code> comme
userinter [] code>.
En regardant l'erreur, il ressemble au type de
modifications code> n'est pas un tableau. Donc,
mapper code> n'existe pas sur cet objet. Comme @massimilianosArtorTeto suggéra pouvez-vous enregistrer la valeur de
modifications code> pour voir ce qu'il contient?