我需要确保如果该问题的所有“答案”都已删除,则用户只能删除其“问题”。
问题和答案存储在不同的集合中。这是一些无效的代码,这些代码解释了我在寻找什么:
service cloud.firestore {
match /databases/{database}/documents {
match /questions/{question_id} {
allow delete: if !exists(/databases/$(database)/documents/answers/{answer}).where(answer.question_id == question_id);
}
}
}
我似乎无法弄清楚如何将“存在”呼叫仅限于那些回答问题的人。
我愿意接受所有建议,甚至包括那些在必要时涉及重组数据的建议。
非常感谢您。
答案 0 :(得分:0)
您无法使用Firebase安全规则对集合执行查询。如果您知道单个文档的完整ID,则只能get()
并检查exists()
单个文档。因此,您现在无法执行的操作。
您可以做的是在其他一些已知文档中保留一个计数或布尔标志,并在该计数值为允许用户删除文档的条件时允许删除。