我在从FireStore的用户列表中删除事件时遇到了麻烦。当用户选择一个事件添加到HTML中的*ngfor模板中的“event.ID”的“my Events”时,我可以看到Firestore添加的特定事件ID。
不过,无论我做什么,我都无法让删除功能正常工作。它实际上是说它运行成功,但没有删除任何东西。我想我在.doc()和.delete()方法之间遗漏了一些东西,但是Google文档非常模糊(或者我没有正确理解它们)。
我尝试指定一个路径,例如
.doc(`/users/${user.uid}/myEventList/${id}`
removeEvent() {
this.myEventListRef
.doc()
.delete()
.then(function() {
console.log("Document successfully deleted!");
})
.catch(function(error) {
console.error("Error removing document: ", error);
});
}
import { Injectable } from "@angular/core";
import * as firebase from "firebase/app";
import "firebase/auth";
import "firebase/firestore";
import { Observable } from "rxjs";
import { HttpClient } from "@angular/common/http";
import { ToastController } from "@ionic/angular";
@Injectable({
providedIn: "root"
})
export class EventService {
public myEventListRef: firebase.firestore.CollectionReference;
public myEventsList: Observable<Event[]>;
public currentEvent: any = {};
constructor(
public toastController: ToastController,
private http: HttpClient
) {
firebase.auth().onAuthStateChanged(user => {
if (user) {
this.myEventListRef = firebase
.firestore()
.collection(`/users/${user.uid}/myEventList`);
}
});
}
getEventList(): firebase.firestore.CollectionReference {
return this.myEventListRef;
}
copyEvent(
eventName: string,
eventPrice: number,
eventLocation: string,
eventType: string
): Promise<firebase.firestore.DocumentReference> {
return this.myEventListRef.add({
name: eventName,
price: eventPrice,
location: eventLocation,
type: eventType
});
}
removeEvent() {
this.myEventListRef
.doc()
.delete()
.then(function() {
console.log("Document successfully deleted!");
})
.catch(function(error) {
console.error("Error removing document: ", error);
});
}
getEventsObservable(): Observable<any> {
return this.http.get("http://localhost:8080/events/eventslistX");
}
async addToMyEventsToast() {
const toast = await this.toastController.create({
color: "secondary",
message: "Added to 'My Events'.",
duration: 2000
});
toast.present();
}
}
import { Component, OnInit } from "@angular/core";
import { EventService } from "../services/event.service";
import { Observable } from "rxjs";
@Component({
selector: "app-my-events",
templateUrl: "./my-events.page.html",
styleUrls: ["./my-events.page.scss"]
})
export class MyEventsPage implements OnInit {
public myEventsList: Array<any>;
public currentEvent: any = {};
constructor(private eventService: EventService) {}
ngOnInit() {
this.eventService
.getEventList()
.get()
.then(eventListSnapshot => {
this.myEventsList = [];
eventListSnapshot.forEach(snap => {
this.myEventsList.push({
id: snap.id,
name: snap.data().name,
price: snap.data().price,
location: snap.data().location,
type: snap.data().type,
date: snap.data().date
});
return false;
});
});
}
removeEventHandler() {
this.eventService.removeEvent();
}
}
我的HTML显示用户选择的事件列表,我可以在其中看到firestore id:
<ion-content>
<ion-card *ngFor="let event of myEventsList; index as i">
<ion-card-header>
<ion-card-title>{{ event.id }}</ion-card-title>
<ion-card-title>{{ event.name }}</ion-card-title>
<ion-card-subtitle>$ {{ event.price }}</ion-card-subtitle>
<ion-card-subtitle>City: {{ event.location }}</ion-card-subtitle>
<ion-card-subtitle> Type of event : {{ event.type }}</ion-card-subtitle>
<ion-icon
name="close-circle"
color="danger"
(click)="removeEventHandler()"
></ion-icon>
</ion-card-header>
</ion-card>
</ion-content>
结果,我完全忘记了我所遵循的教程中提到的如何获取ID,因为我在阅读时不需要删除方法,所以我跳过了它。
在我的event-service.ts中,我添加了以下内容以从文档引用中获取id:
getEventDetail(eventId: string): firebase.firestore.DocumentReference {
return this.eventListRef.doc(eventId);
}
并在同一服务中添加了以下方法:
removeEvent(eventId) {
this.eventListRef
.doc(eventId)
.delete()
.then(function() {
console.log("Document successfully deleted!");
})
.catch(function(error) {
console.error("Error removing document: ", error);
});
}
removeEventHandler(event) {
this.eventService.removeEvent(event.id);
}
(click)="removeEventHandler(event)"
我如何删除一个特定的文档中的一个集合在fiRecovery使用反应? 我在这里和谷歌上看了看,但我没有发现任何内在相关的东西。 我只是设法从我的集合中删除索引[0]的文档。 这状态idDoc接收所有id文档。 如果我只是传递. doc(idDoc),我会得到以下错误: Firebase Error: Function Collection Reference.doc()要求它的第一个参数是非空字符
当我试图在MongoDB中删除集合中的文档时。它没有删除,因为集合已被封顶。我的问题是为什么?在这种情况下,是否有解决方案或其他功能可以删除文档?
所以我有2个系列, 用户(收藏) 检查(收集) 用户只有名为不同电子邮件地址的文档 检查将文档命名为不同的电子邮件地址,然后每个文档都有另一个名为“assignedToMe”的集合,然后此集合具有命名为某些唯一 ID 的不同文档。 我想做的是,每当我删除一个用户,我希望它的文件命名为他的电子邮件地址被删除,以及从检查(收集)。 我在这里遇到的问题是,我能够从用户(集合)中删除该用户,但无法删除该特
问题内容: 我有一个(尽管我猜这个问题也适用于其他集合)对象。据我了解,当文档讨论删除映射时,那么它就是从哈希表中删除条目,即不一定破坏实际对象。如果该表中唯一剩余的对该对象的引用,那么该对象会被垃圾回收吗? 如果我这样做了,并且表中的那些对象没有在其他任何地方引用,它们会被垃圾回收吗? 最快的方法是实际从表中删除所有条目,同时销毁那些对象。 问题答案: 是的,如果集合是最后引用这些对象的地方,则
无法从外壳中删除集合, 集合可用并且我的 php 脚本正在访问它的东西(选择|更新) 但当我使用: 它给了我一个错误:
问题内容: 我正在寻找清除整个收藏夹的方法。我看到有一个批处理更新选项,但这需要我知道集合中的所有文档ID。 我正在寻找一种简单地删除集合中每个文档的方法。 谢谢! 编辑:下面的答案是正确的,我使用以下方法: 问题答案: 没有API可以一次性删除整个集合(或其内容)。 从Firestore文档中: 要在Cloud Firestore中删除整个集合或子集合,请检索集合或子集合中的所有文档并将其删除。