You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firestore规则问题:阻止含notes子集合的music删除失败

解决Firestore阻止含子集合的文档删除的规则问题

原规则失效的核心原因是:exists()函数仅支持检测单个文档的存在性,你传入的/musics/$(musicId)/notes是子集合路径而非具体文档路径,导致规则逻辑判断错误。

要实现「当notes子集合存在文档时阻止musics文档删除」的需求,需要通过通配符匹配子集合内的任意文档,修正后的规则如下:

match /databases/{database}/documents {
  match /musics/{musicId} {                              
    allow delete: if request.auth.uid != null && 
      !exists(/databases/$(database)/documents/musics/$(musicId)/notes/{noteId});
  }
}

规则说明

  • 添加/{noteId}通配符后,exists()会检查notes子集合下是否存在任意文档:
    • 若子集合中有至少一个note文档,exists()返回true,!exists(...)为false,删除操作被阻止;
    • 若子集合为空或不存在,exists()返回false,!exists(...)为true,已认证用户可正常删除musics文档。

内容的提问来源于stack exchange,提问作者Foxhunt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:04:59