在Firebase中,为文档添加一个字段属性。

8 浏览
0 Comments

在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);
}

0
0 Comments

问题的原因是在使用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,并将其保存到一个变量中供后续使用。

0