【问题标题】:Cloud Firestore security rules: how to check if property exists?Cloud Firestore 安全规则:如何检查属性是否存在?
【发布时间】:2019-06-26 18:07:43
【问题描述】:

我需要检查存储中的文档中是否存在属性。 allow update, delete: if resource.data.uid; 在上面的代码中,我有错误“对象上未定义属性 uid。”,那么我如何检查数据中的 uid 是什么?

【问题讨论】:

  • 不清楚你在这里问什么。我建议更详细地解释您要完成的工作,其中包括显示您要保护的查询、该位置的数据库内容以及有关您要编写的规则的更多详细信息(不是只是你现在拥有的一行)。
  • 如果目标文档没有属性 uid,我需要允许删除、更新(例如,在 javascript 中只是 if(resource.data.uid) { // if true} else { //if false } ,但是当文档没有 uid 时,firebase 规则会出错而不是假的

标签: firebase google-cloud-firestore firebase-security


【解决方案1】:

要检查文档是否包含特定字段,我使用in

allow update, delete: if 'uid' in resource.data;

【讨论】:

  • 更正一点:需要使用resource.data.keys()
  • @A.Melnyk 根据文档firebase.google.com/docs/reference/rules/rules.Map,in 运算符适用于地图和列表。所以不需要调用keys()
  • 有没有办法否认这一说法。我想检查该属性是否不存在
  • 是的,!'uid' in resource.data 应该适用于写入和获取操作。如果您无法使其适用于您的用例,请使用最少的代码+规则+数据打开一个新问题,我们任何人都可以使用它来重现问题。
猜你喜欢
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 2021-05-23
  • 2020-08-21
  • 2021-04-21
  • 1970-01-01
  • 2018-03-19
相关资源
最近更新 更多