我正在尝试运行一个函数来将firebase列表项的值更改为空字符串。因此,我正在尝试从firebase中的图像值中删除新闻帖子的拇指图像url。
当我发布一个新闻项目时,它会像这样建模并保存到firebase中。
news: any = {
title: '',
shortDescription: "",
description: "",
createdAt: Date.now(),
thumb: ""
}无论何时Ipost新闻项目,帖子的图片都会保存在firebase存储中,然后指向该图片的链接会保存在新闻项目的“拇指”中。
另一个链接被保存在一个名为' media‘的节点下,允许我在媒体库中查看添加了新闻帖子的所有图像。
当我浏览媒体库时,我可以删除图片,当我删除一张图片时,我搜索firebase新闻帖子,在thumb部分找到匹配的图像url,然后我想删除链接,并在“thumb”部分留下一个空字符串。
下面的updateNewsImageLink()函数中使用的变量:
news: Array<any>;
newsDataRef: AngularFireList<any>;
newsObservable: Observable<any>;
list: anythis.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存储中删除,因此一旦图像本身被删除,我就想在firebase数据库中将新闻'thumb‘值保留为空字符串。
发布于 2018-02-17 03:36:02
所以我设法自己解决了这个问题。我要做的是,从我想要删除的图片的新闻帖子中获取密钥,然后使用它来运行函数,将thumb更新为空字符串。
因此,我在构造函数中添加了以下内容:
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。
我添加了新闻键:构造器上的任何变量。
现在,当我运行下面的函数时,我只是使用新闻键作为参考点来更新节点。
updateNewsImageLink() {
this.newsDataRef.update(this.newskey, { thumb: '' });
}现在,在管理媒体库中的图像时,我可以从firebase存储中删除图像,从数据库中的媒体库节点中删除图像,现在还可以从数据库中的新闻帖子缩略图中删除图像。
我希望这能以任何方式帮助到某人。
https://stackoverflow.com/questions/48816333
复制相似问题