wiz*_*loc 6 database firebase google-cloud-firestore
前言:这里已经问过这个问题,但用户放弃了对第一个答案的解决方案。这个问题也不同,因为我有两个相似的集合结构,但是错误仅发生在其中一个上。
我正在使用Google的新的Firestore数据库,并创建了以下结构:区域/ {区域列表} /调度/ {调度列表} / {调度信息}
我们正在使用此方法通过Firebase Admin SDK在后端创建自定义令牌。当用户在后端登录时,我们会生成令牌并添加他们可以访问的区域作为其他声明,我们打算从安全规则中的auth / request.auth对象访问这些域,以限制他们对调度文档的访问相应地。我提到这个是为了防止我们错误地处理结构,在这种情况下,请纠正我,因为我们是Firestore的新手。
我们遇到的问题是其中一个文档发出警告:“此文档不存在,不会出现在查询或快照中”(请参见下图)。但是,我们有一个相同的文档结构(图像中的文档7)不会发出此警告,并且会出现在查询和快照中。
这是在告诉您territories/6
不存在,而是实际存在territories/7
。
在Cloud Firestore中,可能有“虚拟”文档拥有的子集合-也就是说,较高级别的文档不存在,但是有子级。
这些虚拟文档是组织信息的简便方法,而无需创建重复的虚拟文档。
在这种情况下,您可以:
territories/6
之前,在其下创建了一堆调度territories
文档,或者territories/6
而不删除子集合文档。小智 8
不确定这是否可以解决您的问题,但确实可以解决...控制台中的消息:"This document does not exist, it will not appear in queries or snapshots"
如果文档中只有子集合而没有字段,则似乎会出现(我想这被称为“虚拟”文档)。
我使用了在现有的“虚拟”文档上set
添加虚拟字段(json对象)的方法,从而可以通过快照或查询发现它们。它没有覆盖/删除这些文档的任何子集合。无法通过控制台添加字段。
我的代码:
var docRef = this.fsdb.collection('sessions')
//do for all "virtual" docs in collection
docRef.doc('mySession1').set({dummy: 'dummy'})
docRef.onSnapshot(val => {
var mySessionsArray: any [] = []
val.forEach(myDoc => {
mySessionsArray.push(myDoc.id)
})
console.log(mySessionsArray)
})
Run Code Online (Sandbox Code Playgroud)
安慰: ["mySession1", "mySession2", "mySession3"]
免责声明,不是行业程序员:-)
归档时间: |
|
查看次数: |
3501 次 |
最近记录: |