"Свойство 'map' не существует для типа '{}'" при попытке получить коллекцию из пожарного магазина Firebase - PullRequest
0 голосов
/ 15 марта 2019

Я следовал документации здесь , чтобы получить данные с идентификатором документа из магазина.

  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 }

Когда я подаю заявку, я получаю эту ошибку

Свойство 'map' не существует для типа '{}'

Ответы [ 3 ]

0 голосов
/ 15 марта 2019

Вы можете попробовать с этим

 this.afs.collection<UserInter>('users').stateChanges(['added']).pipe(map(changes => {
    return changes.map(a => {
      const data = a.payload.doc.data() as UserInter;
      const id = a.payload.doc.id
      return { id, ...data }
    })
  }))
0 голосов
/ 16 марта 2019

Я исправил эту ошибку, используя оператор карты без канала.Этот код работает

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 }
0 голосов
/ 15 марта 2019
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;  
}
...