如果可选日期和地图具有有效类型,请检查 Firestore 安全规则

Check with Firestore security rules if optional dates and maps have valid types

在 Firestore 安全规则中,我们可以检查可选字符串和列表的类型,如下所示:

function reviewFieldsAreValidTypes(docData) {
  return docData.get('photo_url', '') is string &&
         docData.get('tags', []) is list;
}

可选时间戳的默认值是什么?

docData.get('dateModified', ???) is timestamp;

对于可选地图?

docData.get('translated', ???) is map;

您的问题没有直接的解决方案,但您可以选择使用类似下面发布的代码的条件:

// resource.data.keys => check if the key exists. 

if !("dateModified" in resource.data.keys()) || (resource.data.dateModified is timestamp)

if !("translated" in resource.data.keys()) || (resource.data.translated is map)

请注意,在编写检索文档的查询时请记住rules are not filters

我们只需要设置一个正确类型的默认值。我们可以使用请求对象:

function reviewFieldsAreValidTypes(docData) {
  return docData.get('photo_url', '') is string &&
         docData.get('tags', []) is list &&
         docData.get('dateModified', request.time) is timestamp &&
         docData.get('translated', request.resource.data) is map;
}