Firebase删除图像链接值替换为空字符串

时间:2018-02-15 21:10:14

标签: angular function firebase firebase-realtime-database firebase-storage

我正在尝试运行一个函数来将firebase列表项值更改为空字符串。所以我试图从firebase中的图像值中删除新闻帖子拇指图像网址。

当我发布新闻时,它会像这样建模并保存到firebase中。

news: any = {
    title: '',
    shortDescription: "",
    description: "",
    createdAt: Date.now(),
    thumb: ""
  }

每当我发布一个新闻项目时,帖子的图像都会保存在firebase存储中,然后图像的链接会保存在新闻项目的“拇指”中。

另一个链接保存在名为“Media”的节点下,以便我可以在媒体库视图中查看添加了新闻帖子的所有图像。

当我查看媒体库时,我可以删除图像,我想要做的是当我删除图像时,我在firebase新闻帖子中搜索拇指部分中匹配的图像网址,我想删除链接和在“拇指”部分留下一个空字符串。

下面的updateNewsImageLink()函数中使用的变量:

  news: Array<any>;
  newsDataRef: AngularFireList<any>;
  newsObservable: Observable<any>;
  list: any

this.imagePath是firebase存储中图像的URL。

    updateNewsImageLink() {
    this.newsDataRef = this.af.list('/news', ref => ref.orderByChild('thumb').equalTo(this.imagePath))
    this.newsObservable = this.newsDataRef.snapshotChanges().map(changes => {
      return changes.map(c => ({ key: c.payload.key, ...c.payload.val() }));
    });
    this.newsObservable.subscribe((res) => {
      this.news = res[0];
      this.list = res;
      this.list.update(this.news, { thumb: ' ' });
    });
  }

我在运行前一个函数之前调用此函数,该函数从firebase存储中删除图像本身,因此一旦图像本身被删除,我就想将新闻'thumb'值保留为firebase数据库中的空字符串。 / p>

1 个答案:

答案 0 :(得分:1)

所以我设法自己解决了这个问题。我必须做的是从我想要删除的图像的新闻帖中抓取密钥,然后使用它来运行该功能将拇指更新为空字符串。

所以在构造函数中我添加了以下内容:

this.newsDataRef = this.af.list('/news', ref => ref.orderByChild('thumb').equalTo(this.imagePath))
          this.newsDataRef.snapshotChanges(['child_added'])
            .subscribe(actions => {
              actions.forEach(action => {
                this.newskey = action.key;
              });
            });

这使我能够抓住新闻帖的密钥并将其分配给:this.newskey。

我添加了newskey:构造函数上方的任何变量。

现在,当我运行下面的函数时,我只需使用newskey作为参考点来更新节点。

updateNewsImageLink() {
    this.newsDataRef.update(this.newskey, { thumb: '' });
  }

现在,当我在媒体库中管理图像时,我可以从firebase存储中删除图像,从数据库中的媒体库节点删除图像,现在也可以从数据库中的新闻帖子中删除。

我希望这可以帮助任何人。