firebase 使用collectionData从fireStore检索数据时出错

mmvthczy  于 2023-10-22  发布在  其他
关注(0)|答案(3)|浏览(147)

我有一个firestore数据库,它存储了一些数据,但是当我试图从中获取记录时遇到了问题。
我的代码应该给予用户的记录,但给出了错误:
错误FirebaseError:应为类型“Query”,但它是:一个自定义wh对象。
这是我的代码

  1. import { Firestore, addDoc, collection, collectionData } from '@angular/fire/firestore'
  2. @Component({
  3. selector: 'app-root',
  4. templateUrl: './app.component.html',
  5. })
  6. export class AppComponent {
  7. constructor(private fs: Firestore) { }
  8. addToFireStore(data: any) {
  9. const collectionInstance = collection(this.fs, 'users')
  10. addDoc(collectionInstance, data).then(() => {
  11. console.log('saved successfully')
  12. }).catch((error) => console.log(error))
  13. }
  14. getDataFromFireStore() {
  15. const collectionInstance = collection(this.fs, 'users')
  16. collectionData(collectionInstance).subscribe(val => console.log(val))
  17. }
  18. }

这里是package.json

  1. {
  2. "private": true,
  3. "dependencies": {
  4. ...
  5. "@angular/fire": "7.6.1",
  6. "firebase": "^10.4.0",
  7. "rxfire": "6.0.4",
  8. "rxjs": "~7.5.0",
  9. },
  10. "devDependencies": {
  11. "@angular-devkit/build-angular": "^15.0.3",
  12. "@angular/cli": "^15.2.9",
  13. "@angular/compiler-cli": "^15.0.0",
  14. "typescript": "~4.8.2"
  15. }
  16. }
xyhw6mcr

xyhw6mcr1#

以下是如何修改getDataFromFireStore方法以创建Firestore查询,然后使用collectionData:

  1. import { Firestore, addDoc, collection, query, collectionData } from '@angular/fire/firestore'
  2. // ...
  3. getDataFromFireStore() {
  4. const collectionInstance = collection(this.fs, 'users');
  5. const queryInstance = query(collectionInstance); // Create a Firestore query
  6. collectionData(queryInstance).subscribe(val => console.log(val));
  7. }
2eafrhcq

2eafrhcq2#

它使用getDoc()getDocs(),而不是使用collectionData()docData()

  1. import { Component } from '@angular/core'
  2. import { Firestore, addDoc, collection, doc, getDoc, getDocs } from '@angular/fire/firestore'
  3. @Component({
  4. selector: 'app-root',
  5. templateUrl: './app.component.html'
  6. })
  7. export class AppComponent {
  8. constructor(private fs: Firestore) { }
  9. onFormSubmit() {
  10. console.log(this.userForm.value)
  11. this.addToFireStore(this.userForm.value)
  12. }
  13. addToFireStore(data: any) {
  14. const collectionInstance = collection(this.fs, 'users')
  15. addDoc(collectionInstance, data)
  16. .then(() => {
  17. console.log('saved successfully')
  18. })
  19. .catch((error) => console.log(error))
  20. }
  21. async getDataFromFirestore() {
  22. const collectionRef = collection(this.fs, 'users')
  23. try {
  24. const querySnapshot = await getDocs(collectionRef)
  25. querySnapshot.forEach((doc) => {
  26. console.log('Document ID: ', doc.id)
  27. console.log('Data: ', doc.data(), doc)
  28. })
  29. } catch (error) {
  30. console.error('Error fetching data: ', error)
  31. }
  32. }
  33. async getNoteById(id = 'id') {
  34. const docRef = doc(this.fs, `users/${id}`)
  35. const querySnapshot = await getDoc(docRef)
  36. console.log(querySnapshot.data())
  37. }
  38. }
展开查看全部
jgovgodb

jgovgodb3#

你在使用Firestore方法和Angular Fire。
Angular Firestore

  1. import { AngularFirestore } from '@angular/fire/firestore';
  2. @Component({
  3. selector: 'app-root',
  4. templateUrl: './app.component.html',
  5. })
  6. export class AppComponent {
  7. constructor(private firestore: AngularFirestore) { }
  8. addToFireStore(data: any) {
  9. this.firestore.collection('users').add(data)
  10. .then(() => console.log('saved successfully'))
  11. .catch((error) => console.log(error));
  12. }
  13. getDataFromFireStore() {
  14. this.firestore.collection('users').valueChanges()
  15. .subscribe(val => console.log(val));
  16. }
  17. }

ngModule

  1. import { BrowserModule } from '@angular/platform-browser';
  2. import { NgModule } from '@angular/core';
  3. import { AngularFireModule } from '@angular/fire';
  4. import { AngularFirestoreModule } from '@angular/fire/firestore';
  5. import { AppComponent } from './app.component';
  6. const firebaseConfig = {
  7. // your firebase config here
  8. };
  9. @NgModule({
  10. declarations: [
  11. AppComponent
  12. ],
  13. imports: [
  14. BrowserModule,
  15. AngularFireModule.initializeApp(firebaseConfig),
  16. AngularFirestoreModule
  17. ],
  18. providers: [],
  19. bootstrap: [AppComponent]
  20. })
  21. export class AppModule { }
展开查看全部

相关问题