javascript - angularfire2 - 获取标签数组

标签 javascript tags google-cloud-firestore angularfire2

我正在尝试获取一组标签以在我的模板中正确打印标签。我有这个:

<div *ngFor="let tweet of tweets | async">

    <p>
    {{ tweet.msg}}
    </p>
    <p>
    {{ tweet.username }}
    </p>
    Tags:
    <div *ngFor="let tag of tweet.tags">
        {{ tag }}
    </div>

</div>

由于索引原因,我的firestore数据库是这样的:

tweets: { 
  msg: "joe", 
  username: "bill2", 
  tags: {
    construction: true,
    computers: true
  }
}

除标签外,一切都正确打印。

我在想这样的事情,但后来我失败了。

this.tweetsCollection = this.afs.collection('tweets');
this.tweets = this.tweetsCollection.valueChanges();
this.tweets.subscribe(tags => {
  tags.forEach(tag => {
    Object.keys(tag).map(key => tag[key])
})

这显然行不通。那有必要吗?我想我想多了。

最佳答案

我想通了

this.tweetsCollection = this.afs.collection('tweets');
this.tweets = this.tweetsCollection.valueChanges()
  .pipe(
    tap(tweets => {

      tweets.forEach(tweet => {

        tweet['tags'] = tweet['tags'] ? tweet['tags'] : {}

        let tags = [];

        Object.keys(tweet['tags']).forEach(tag => {
          tags.push(tag);

        })

        tweet['tags_list'] = tags;
      })
    })
  )

这是几件事。我无法覆盖“tags”数组,我不得不创建一个新数组:“tags_list”。此外,如果没有 do() in angular < 5 或 pipe(tap()) in angular 6,您将无法在值更改后立即订阅。最后但同样重要的是,感谢 Jeremy W 和 Troy Myers,我现在捕获了 key 正确。它还异步更新标签,这很棒。谢谢大家。

关于javascript - angularfire2 - 获取标签数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51090296/

相关文章:

javascript - 全日历中的 If Else 语句

完整路径和关闭电流之间的 Html 路径区别?

android - 如何在 Firestore 中查询包含已发送参数的文档?

firebase - Dart-如何使StreamBuilder停止监听事件

xml - 如何使用 pom.xml 备份文件?

firebase - React Native 将 2 个 Firestore 集合合并到一个 Flatlist 中

javascript - Slick Carousel 无法初始化方法

javascript - 在 React 中发布数据

javascript - 如何将 HTML 元素锚定在其他两个元素之间的中心?

Android:卡仿真 - 使用 PN532 nfc 模块读取 ndef 消息