【发布时间】:2018-11-27 15:54:09
【问题描述】:
在我的客户端,我正在创建一个包含“createdDate”字段之一的文档
以下是来自 Firestore 模拟器的有效负载
{
"__name__": "/databases/(default)/documents/billing/aaaa",
"data": {
"createdDate": 1529237500239,
"createdDateTimeFormat": "2018-06-12T07:00:00.000Z"
}
}
我尝试设置安全规则以确保“createdDate”不在未来。
service cloud.firestore {
match /databases/{database}/documents {
match /billing/{userId}{
allow create: if (request.resource.data.createdDate < request.time.toMillis());
}
}
}
这会拒绝访问。
接下来,我尝试了以下引用时间戳格式的规则。这也会导致访问被拒绝。
service cloud.firestore {
match /databases/{database}/documents {
match /billing/{userId}{
allow create: if (request.resource.data.createdDateTimeFormat < request.time);
}
}
}
【问题讨论】:
-
您不能使用 createdDateTimeFormat 之类的字符串与
request.time进行日期比较。正如我在回答中所说,request.time是 Timestamp 类型的对象,只能与您文档中的其他 Timestamp 类型的对象进行比较。
标签: firebase google-cloud-firestore firebase-security