Аутсервис против AngularFirestore - PullRequest
0 голосов
/ 05 октября 2018

Я использую AuthService для вызова моей базы данных MySql с PHP API, и, следовательно, мои функции PHP для моего приложения Ionic 3 Angular 4.

Вот как я вызываю, чтобы получить userData, и он работает нормально

import { AuthService } from "../../providers/auth-service";

...

constructor(
  public authService: AuthService,
  private loadingCtrl: LoadingController
) {
  const data = JSON.parse(localStorage.getItem("userData"));
  this.userDetails = data.userData;
  this.userPostData.uid = this.userDetails.uid;
  let loader = this.loadingCtrl.create({
    content: 'Please wait...'
  });
}

У меня есть другой проект, который использует AngularFirestore

import { AngularFirestore, AngularFirestoreDocument } from  'angularfire2/firestore';
import { AngularFireAuth } from 'angularfire2/auth';
import { Storage } from '@ionic/storage';

и вызывает constructor вот так

private users: AngularFirestoreDocument<{}>;

constructor(
  public navCtrl: NavController,
  private afService: AngularFirestore,
  private storage: Storage,
  private loadingCtrl: LoadingController,
  private afAuth: AngularFireAuth
) {
  this.uid = localStorage.getItem('uid');
  this.users = this.afService.collection('users').doc(this.uid);
  let loader = this.loadingCtrl.create({
    content: 'Please wait...'
  });
  loader.present();
  this.users.valueChanges()
    .subscribe((res: any) => {
      this.canDoMessage = res.canDoMessage;
      loader.dismiss();
    }, error => {
      loader.dismiss();
    });
}

Я просто хочу понять, чтоВызов this.afService.collection делает?

По сути, я спрашиваю, как вызвать «пользователей» на AuthService

  constructor( public authService: AuthService,,

, как это на Firestone

  constructor(private afService: AngularFirestore) { **this.users = afService.collection('users')**; }

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Я просто хочу понять, что делает вызов this.afService.collection?

Ответ: - Служба AngularFirestoreCollection является оберткой вокруг родных типов Firestore SDK CollectionReference и Query.Это универсальный сервис, который предоставляет вам строго типизированный набор методов для манипулирования и потоковой передачи данных.Этот сервис предназначен для использования в качестве @Injectable ().

AngularFirestoreCollection - это сервис, который вы используете для создания потоков коллекции и выполнения операций с данными в коллекции underyling.

this.itemsCollection = afs.collection<Item>('items');

Попробуйте этот код

this.users = this.afService.collection<user>('users').doc(this.uid);

Проверьте ссылку: - https://github.com/angular/angularfire2/blob/master/docs/firestore/collections.md

0 голосов
/ 05 октября 2018

Вы вводите AngularFirestore как зависимость, и у вас будет ее экземпляр в afService.

Когда вы вызываете this.afService.collection('users'), он возвращает вам AngularFirestoreCollection<{}>, который является оболочкой для родных типов Firestore SDK CollectionReference и Query.Это универсальный сервис, который предоставляет вам строго типизированный набор методов, таких как valueChanges(), snapshotChanges(), stateChanges() и auditTrail() для потоковой передачи данных.

Когда вы вызываете this.afService.collection('users').doc(this.uid), онвозвращает вам AngularFirestoreDocument<{}>, который является оберткой для родного типа Firestore SDK DocumentReference.Это универсальный сервис, который предоставляет вам строго типизированный набор методов, таких как valueChanges() и snapshotChanges() для потоковой передачи данных.

Поскольку Firebase основан на событиях, эти API, которые есть у вас на AngularFirestoreCollection и AngularFirestoreDocument дает вам возможность передавать данные в форме, с которой вы знакомы (используя Observable s в Angular)

Пожалуйста, перейдите по ссылкам, чтобы просмотреть документы, чтобы узнать больше об этих типах.

...