我在“projects”集合中创建了一个新项目,代码如下:
addProject(project:any) {
let projectsCollection = collection(this.firestore,'projects');
return addDoc(projectsCollection,project);
}
我需要这个函数来返回创建的文档的ID,因为我以后需要在这个文档中添加一个新的集合。换句话说,我需要接收在Angular服务中创建的文档的ID,以继续我的逻辑,这可能吗?
在创建项目之后,我需要调用这个新函数(下面的函数)来在上面创建的项目中添加一个新的集合。
addService(service: any) {
let projectsCollection = collection(this.firestore,'projects', (here is the ID of the project created above..), 'projectDetailService');
return addDoc(projectsCollection,service);
}
但我找不到获取新创建的项目ID的方法。有人能以任何方式帮助我吗?谢谢
我尝试了不同的方法,都没有成功。
2条答案
按热度按时间gudnpqoy1#
编辑:我刚刚注意到这个问题涉及到角。我猜angular有一些firebase库使用observable而不是promise,在这种情况下,我的代码示例将无法完全工作。
addDoc
创建的promise解析为一个文档引用,该引用有一个id:或者如果您更喜欢
.then
而不是async
/await
:blpfk2vs2#
使用Firebase,你可以创建一个文档,而不需要提供id,这个函数就是AddDocument。另一个函数是SetDocument,它要求你为文档提供一个id,如果文档还不存在,这个函数会创建文档,如果文档已经存在,它会更新整个文档。还有其他功能,如更新,让您更新文档的特定字段。
正如你已经说过的,在第一个示例中,如果你使用add函数,你可以通过将函数的结果保存在一个变量(如docRef)中来获得一个docid。如果你想使用set函数,你可以用UUID或任何其他库创建文档id,并将其保存为对象的属性,就这样了。
我不太清楚firebase给Angular用户的api,我用过react,它提供了正常的firebase功能,也用过ios,它给了你一些特定的api,但是crud的基本操作仍然是一样的,从firebase的add,set,update,delate功能。