以下规则在嵌套 (**( 匹配中的"请求"上生成错误:
运行模拟时出错 — 错误:模拟器规则行 [10],列 [30]。空值错误。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Allow users to only edit their records
match /users/{userId}{
allow read, update, delete: if request.auth.uid == userId;
allow create: if request.auth.uid != null;
match /{documents=**} {
allow read, write: if request.auth.uid == userId;
}
}
}
}
失败的模拟器测试是:
GET: /users/MyUserId/items/MyItemId
这是使用"密码"身份验证,但即使将其作为"未经身份验证"运行也会产生相同的错误,就好像模拟器未正确编译规则一样。
进一步的故障排除显示它在数据库中实时工作,只是不在模拟器中工作。所以一定是模拟器错误。