я использую 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')**; }
Вы вводите 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)
Пожалуйста, перейдите по ссылкам, чтобы просмотреть документы, чтобы узнать больше об этих типах.
Я просто хочу понять, что делает вызов this.afService.collection?
Ans: —
Служба AngularFirestoreCollection является оболочкой для типов CollectionReference и Query собственного пакета Firestore SDK. Это универсальный сервис, который предоставляет вам строго типизированный набор методов для манипулирования и потоковой передачи данных. Этот сервис предназначен для использования в качестве @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