如果可选日期和地图具有有效类型,请检查 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;
}
在 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;
}