在我的客户端,我正在创建一个包含其中一个字段的文档" 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());
}
}
}
这会拒绝访问。
接下来,我尝试了以下引用Timestamp格式的规则。这也使访问被拒绝。
service cloud.firestore {
match /databases/{database}/documents {
match /billing/{userId}{
allow create: if (request.resource.data.createdDateTimeFormat < request.time);
}
}
}
答案 0 :(得分:3)
request.time
的类型为Timestamp,您可以在rules reference documentation中看到,但您将其用作数字。
您有两种选择。首先,您可以将createdDate字段更改为Timestamp类型对象,这可能是更好的方法。
如果您必须将其保留为数字,则必须将allow create: if (request.resource.data.createdDate < request.time.toMillis());
时间戳对象转换为与您的号码测量值匹配的数字。如果您的号码以纪元为单位以毫秒为单位进行衡量,则可以使用toMills()方法:
onChangeText