【问题标题】:Authservice vs AngularFirestoreAuthservice vs AngularFirestore
【发布时间】:2019-03-10 17:51:06
【问题描述】:

我正在使用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')**; }

【问题讨论】:

  • 也许是英语。但目前还不是很清楚你到底在问什么。
  • 不,不是英语。我是 ionic 和 Angular 的新手。 “用户”怎么称呼?表 users 构成 Firestone 数据库?
  • 你所说的“用户”是什么意思?
  • 它为什么存在?为什么开发人员调用它,它有什么作用?调用表?
  • this.users = this.afService.collection('users').doc(this.uid); 检索文档 this.uid来自 users 集合,如FireStore documentation 所示。 users 是一个 var(变量)并且不执行任何调用,它只是保存数据。还有更多的问题吗?

标签: php angular firebase ionic-framework angularfire2


【解决方案1】:

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

当您调用 this.afService.collection('users') 时,它会返回一个 AngularFirestoreCollection&lt;{}&gt;,它是原生 Firestore SDK 的 CollectionReferenceQuery 类型的包装器。它是一种通用服务,可为您提供一组强类型方法,例如用于流式数据的 valueChanges()snapshotChanges()stateChanges()auditTrail()

当您调用 this.afService.collection('users').doc(this.uid) 时,它会返回一个 AngularFirestoreDocument&lt;{}&gt;,它是原生 Firestore SDK 的 DocumentReference 类型的包装器。它是一种通用服务,可为您提供一组强类型方法,例如用于流式数据的 valueChanges()snapshotChanges()

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

请点击链接浏览文档以了解有关这些类型的更多信息。

【讨论】:

  • 感谢您的时间 Sidd 我只是不知道如何使用 Authservice 而不是 Firestone 来呼叫用户
  • 请创建一个示例stackblitz 正确说明您的问题。
  • 好的,我在 providers 文件夹中使用 auth-service 文件、登录页面和 pages 文件夹中的搜索页面做了一个示例,以显示我的 authservice 是如何工作的:stackblitz.com/edit/angular-bcawuu。这就是火石在搜索页面上的工作方式:stackblitz.com/edit/angular-mu9rm1 我想知道的是如何在火石搜索文件上使用我的 authService。在stackblitz.com/edit/angular-mu9rm1 上,不是实现firestone,而是实现providers/authService/,我知道它是同一回事。但我想知道如何使用本地数据库
  • 基本上我要问的是如何在 AuthService 构造函数上调用“用户”(公共 authService:AuthService,就像在 Firestone 构造函数上一样(私有 afService:AngularFirestore){ this.users = afService.collection ('用户'); }
【解决方案2】:

我只是想了解调用 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

【讨论】:

    猜你喜欢
    • 2017-07-31
    • 1970-01-01
    • 2020-06-09
    • 2018-08-28
    • 2016-05-26
    • 2021-02-16
    • 1970-01-01
    • 2018-08-11
    • 2018-12-15
    相关资源
    最近更新 更多