我使用Firestore Rules时遇到的一个大问题是,在Firebase控制台中使用模拟器来模拟数据库访问与我从客户端看到的行为不符。现在,我偶然遇到了一个似乎无法解决的问题。
在模拟器中,以下语法正常工作:
allow create: if request.writeFields.hasAll(["a", "b", "c"]);
当我从Android客户端请求完全相同字段时,我得到Error performing setData, PERMISSION_DENIED: Missing or insufficient permissions.
。
请求(简化)如下:
通过设置allow create;
(简化),我已经验证并确定问题必须与request.writeFields
相连,因为一旦我添加有关该请求的逻辑,我的请求(仅来自真实客户的请求)就会失败。
在我的所有测试中允许模拟访问数据 。
我的参考是List
interface。
我想知道我是否缺少关于writeFields
(可能连接到allow create
)的信息,以及是否经常看到模拟访问与真实访问之间的差异。
请记住,我的语法在模拟器中可以很好地工作,但是包含完全相同的JSON数据的真实请求失败。