Authservice与AngularFirestore

时间:2018-10-05 08:59:42

标签: php angular firebase ionic-framework angularfire2

我正在使用AuthService来通过PHP api调用MySql数据库,因此我的Ionic 3 Angular 4应用程序的PHP函数也是如此。

这就是我打电话来获取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,,

在凡世通上像这样

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

2 个答案:

答案 0 :(得分:0)

您将AngularFirestore作为依赖项注入,并且您将在afService中拥有它的实例。

调用this.afService.collection('users')时,它会返回 AngularFirestoreCollection<{}> 给您,它是Firestore SDK的CollectionReferenceQuery类型的包装。这是一项常规服务,可为您提供一组强类型的方法,例如valueChanges()snapshotChanges()stateChanges()auditTrail(),用于流传输数据。

调用this.afService.collection('users').doc(this.uid)时,它将返回一个 AngularFirestoreDocument<{}> ,它是本机Firestore SDK的DocumentReference类型的包装。这是一项常规服务,可为您提供一组强类型的方法,例如valueChanges()snapshotChanges(),用于流传输数据。

由于Firebase是基于事件的,因此您在AngularFirestoreCollectionAngularFirestoreDocument上拥有的这些API为您提供了一种以熟悉的形式流数据的方法(使用Observable在Angular中)

请点击链接以浏览文档,以详细了解这些类型。

答案 1 :(得分:0)

我只想了解调用this.afService.collection的作用?

答案:- AngularFirestoreCollection服务是本机Firestore SDK的CollectionReference和Query类型的包装。它是一项通用服务,可为您提供一组用于处理和流传输数据的强类型方法。该服务旨在用作@Injectable()。

AngularFirestoreCollection是用于创建集合流并在底层集合上执行数据操作的服务。

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