它是firebase验证的经典之作:检查成员引用是否确实存在,结构定义如here所示。
"members": {
"firstUserId" : true,
"secondUserId" : true,
"thirdUserId" : true
}
在实时数据库中,它就像
"members":{
"$user_id":{ ".validate":"root.child('users/' + $user_id).exists() && newData.isBoolean() && newData.val() === true" }
},
但是在Firestore中我们无法遍历文档字段,我们只能验证我们知道名称的字段,似乎。
有人可以说解决方案是将这些ID放在集合中而不是地图中,但是这会阻止我查询文档,例如"我所属的所有对象"。 此外,添加一个集合似乎真的太过分了,因为该集合中的文档绝对是空的。
如果我将该地图转换为集合,我还必须在用户文档上保留对象ID(或引用)也的地图,并一次检索一个对象或者有两个请求,其中第二个是"给我ID为X或Y或Z或......的对象的集合。",这不是一个优雅的解决方案。
这个用例有优雅的解决方案吗?