【问题标题】:collection reference cast to angularfirestorecollection or observable集合引用转换为 angularfirestorecollection 或 observable
【发布时间】:2025-11-26 08:30:01
【问题描述】:

我有以下代码

服务文件数据链接

private dbUser = '/users';
constructor(private firestore: AngularFirestore) {
this.userCollection = firestore.collection(this.dbUser);
}

在我的组件文件中

this.datalink.userCollection .ref.where("name","==","xxx").orderBy("updatedOn")

它返回 CollectionReference,

如何在 AngularFirestoreCollection 或 Observable 中转换 CollectionReference?

我得到了下面的链接

Convert CollectionReference in AngularFirestoreCollection<T> or Observable?

但无法转换我的场景,缺乏知识是时代的新事物。

我知道我可以像下面这样按照我的要求返回。

this.firestore.collection('collectionanme',ref)

但我希望上面的查询返回 AngularFirestoreCollection 或 Observable?

请帮忙

谢谢

【问题讨论】:

  • 您能显示更多代码吗?特别是您的构造函数,您在哪里设置 dblist 以及您在哪里尝试返回集合/可观察对象。

标签: angular firebase-realtime-database google-cloud-firestore observablecollection angularfire2


【解决方案1】:

如果您想返回 AngularFirestoreCollection 或 Observable,请执行以下操作:

import { AngularFirestore, AngularFirestoreCollection } from 'angularfire2/firestore';

export class MyClass {    
  dblist: AngularFirestoreCollection<any>;

  constructor(private afs: AngularFirestore) {
    this.dblist = this.afs.collection<any>('path/to/collection', ref => {
      return ref.where("name","==","DAL").orderBy("updatedOn");
    });
  }

  getCollection(): AngularFirestoreCollection<any> {
    return this.dblist;
  }

  getObservable(): Observable<any[]> {
    return this.dblist.valueChanges();
    // or return this.dblist.snapshotChanges();
  }
}

【讨论】:

  • 你可以看到我说我在我的项目中是这样做的,但是我想改进项目的结构,而不是直接给出集合,我想给出集合的参考,请通过又是我的帖子
  • 我看不出你在哪里说/表明你是这样做的。你说“它返回 CollectionReference”和“我想给出集合的参考”。如果你想返回一个引用并且它当前正在返回一个引用,那么问题是什么?
  • 很抱歉造成混淆。 “我知道我可以像下面这样按照我的要求返回。this.firestore.collection('collectionanme',ref)”
  • 我只需要将 collectionrefrence 转换为 observable 或 angularfirestorecollection
  • 我认为您不能将引用投射到集合或可观察对象。我检查了一堆官方文档,但找不到任何关于投射 CollectionReference 的内容。也许您遇到了XY problem。你的用例是什么?
【解决方案2】:

私有 dbUser = '/users'; 用户:任何;声明可观察的 构造函数(私人火库:AngularFirestore){ this.user(); } 用户(){ this.user = this.firestore.collection('Users',ref =>ref.where('name','==', 'xyz' )).valueChanges(); }

【讨论】:

  • 我在帖子中提到了这个语法,我可以得到,我想将集合引用转换为 observale
  • 我说这对我也有用,但请检查您的代码,您正在提供集合名称。 this.firestore.collection('collectionanme',ref) 这样。我不是这样问的。请再看一遍我的帖子
最近更新 更多