【问题标题】:Angular & AngularFire 5 Retrieve Data From DocumentAngular & AngularFire 5 从文档中检索数据
【发布时间】:2017-11-26 16:54:39
【问题描述】:

我在用什么

  • 角 5
  • AngularFire5
  • Firebase 和 Firestore

我正在努力实现的目标

我目前正在使用 Google Firebase 的新 Firestore 创建一个新应用,同时学习 Angular。我的应用程序当前创建了一个名为 Links 的集合,并创建了一个具有 custom id 的新文档,该文档是在用户添加链接时生成的并且是 shorturl,并且在该文档中,有 4 个字段:

  • uid
  • 网址
  • 短网址
  • 点击次数

我希望应用在 url 字段中查询文档中的数据。

到目前为止我所拥有的

我已经创建了正确文档的路径:

  linkCollection: Observable<{}>;
  constructor(private afs: AngularFirestore, private router: Router) {
      this.path = this.router.url.replace('/','');
      afs.collection('Links').doc(this.path).valueChanges();
  }

我被困在哪里

这可能是一个简单的解决方案,但我不确定如何获取 url 字段。我拥有的代码能够检索文档,我在另一部分使用类似的方法来检索所有想法并使用 *ngFor 显示数据,但我不确定如何在 ts 文件而不是模板中执行此操作。

【问题讨论】:

    标签: angular firebase angularfire2 google-cloud-firestore angularfire5


    【解决方案1】:

    这是您将文档作为 Observable 读取并在组件模板中使用其数据的基本模式。

      linkRef: AngularFirestoreDocument<any>;
      link: Observable<any>;
      path: string;
    
      constructor(private afs: AngularFirestore, private router: Router) {}
    
      ngOnInit() {
        // 0. this works, but there's probably better ways to get the ID
        this.path = this.router.url.replace('/','');
    
        // 1. make a reference
        this.linkRef = this.afs.collection('links').doc(this.path)
    
        // 2. get the Observable
        this.link = this.linkRef.valueChanges();
      }
    

    然后在您的 HTML 中,您可以打开 observable 并显示 URL 属性。

    {{ (link | async)?.url }}
    

    或者,可以通过在 TS 中的某处手动订阅来解包,但您也应该在 NgOnDestroy 期间取消订阅以避免内存泄漏。

    this.link.subscribe(data => console.log(data) )
    

    【讨论】:

    • 我知道如何在 HTML 中解包,但是如何在 Typerscript 文件中解包呢?我需要使用url做一个函数,我不知道如何访问它。
    • 我刚刚更新了代码。您需要做的就是订阅。 (异步管道在后台自动执行此操作)。
    • 我完全按照你说的做了,我得到了控制台来记录数据,但是当我尝试这个时:this.link.subscribe(data =&gt; this.data = data); console.log(this.data); 控制台日志未定义。如何将数据分配给变量?
    • 这是一个异步操作 - 如果您在 subscribe 块中使用 console.log,它将被定义。
    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 2020-03-18
    • 2019-01-12
    相关资源
    最近更新 更多