我正在尝试运行一个函数来将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>
答案 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存储中删除图像,从数据库中的媒体库节点删除图像,现在也可以从数据库中的新闻帖子中删除。
我希望这可以帮助任何人。