在Firebase中,为文档添加一个字段属性。
在Firebase中,为文档添加一个字段属性。
每次点击添加按钮时,我都会调用一个方法。在这个方法中,我会为我的集合创建一个包含标题和字符串数组的新文档。通过调用保存服务中的一个方法,我可以在我的方法中完成这个文档的创建。当点击完成按钮时,我想在我的文档中添加一个最后的字符串值字段。我该如何获取当前保存的ID的快照,以便添加一个新元素?
我正在使用Angular和Firestore。
这些按钮位于component.html中。
onSave和onComplete位于component.ts中。
onSave() { const btn = document.getElementById("addtopic"); this.modalService.hide(1); // 获取开始日期 this.startTopicTimestamp = firebase.firestore.Timestamp.fromDate(new Date()); console.log(`开始时间:${this.startTopicTimestamp}`); btn.innerHTML = "结束话题"; btn.setAttribute('class', 'btn btn-danger'); // 创建新文档 this.savedService.savedDoc(this.topicTitle, this.myTags, this.startTopicTimestamp); } onComplete(){ // 在这里我们应该得到当前保存的ID的快照 // 使这个函数工作 this.savedService.addElement(this.saved.id) }
这个方法是savedService的一部分
public savedDoc(title: string, tags: string[], date: Date): void { const savedFields = { title: title, startTime: date, tags: tags } this.db.collection('saved').add(savedFields); }
问题的原因是在使用Firebase的Firestore时,想要在添加一个文档到集合后获取该文档的ID。解决方法是使用add
方法返回的DocumentReference
对象的id
属性来获取文档的ID,并将其保存到一个变量中供后续使用。
具体的解决方法如下:
1. 在保存文档的方法中,使用add
方法将文档添加到集合中,并在then
回调函数中获取DocumentReference
对象。
2. 使用docRef.id
来获取文档的ID,并将其返回。
3. 在调用保存文档的方法时,将返回的ID保存到一个全局变量中,可以声明一个字符串变量来存储ID。
4. 可以通过await
关键字来等待保存文档方法的返回结果,并将返回的ID设置给变量。
下面是具体的代码示例:
public async savedDoc(title: string, tags: string[], date: Date): Promise{ const savedFields = { title: title, startTime: date, tags: tags } const docRef = await this.db.collection('saved').add(savedFields); return docRef.id; } // 调用保存文档的方法,并将返回的ID保存到变量中 const cardId = await this.savedService.savedDoc(this.topicTitle, this.myTags, this.startTopicTimestamp);
通过以上步骤,就可以在Firebase的Firestore中添加一个字段属性到文档,并获取该文档的ID,并将其保存到一个变量中供后续使用。