Firebase Storage安全规则调用Firestore报错:无效函数名get
问题修复方案
错误的核心原因有两个:
- Firebase Storage安全规则中,访问Firestore数据不能直接使用
get()函数,必须通过firestore.get()明确指定Firestore服务的方法。 - 函数调用时传递了多余的参数,函数定义未接收该参数会导致逻辑异常。
修正后的完整规则代码:
rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /orders/{orderId}/{folder}/{fileName} { function isUserAssociatedWithOrder() { return request.auth != null && firestore.get(/databases/(default)/documents/ordersPublic/$(orderId)).data.customerUid == request.auth.uid } // Read and upload only if user is part of the order allow read, write: if isUserAssociatedWithOrder(); // Explicitly disallow update/delete allow update, delete: if false; } } }
关键修改点:
- 将
get()替换为firestore.get():Storage规则环境下,必须通过firestore前缀来调用Firestore的读取方法,否则会被识别为无效函数。 - 移除函数调用时的
orderId参数:match块中已捕获{orderId}变量,函数内部可直接访问,无需额外传递。
内容的提问来源于stack exchange,提问作者Jasperan
相关产品推荐
相关产品推荐

