将 request.time 与在 firestore 规则中使用 toMillis() 设置的值进行比较?
comparing request.time to value set using toMillis() in firestore rules?
我有以下代码,我想比较 2 个值并相应地设置规则,但显然两者之间没有一致性,至少比较不起作用问题是我想将所有时间戳存储在 ms 中.
// Data Filed set in cloud fuction.
const expiresIn = 3600; // test 1h //172800 === 48h
const createdAt = admin.firestore.Timestamp.now().toDate();
createdAt.setSeconds(createdAt.getSeconds() + expiresIn);
premiumUntill: admin.firestore.Timestamp.fromDate(createdAt).toMillis()
// Rules
&& request.auth.token.premiumUntill > request.time
&& resource.data.premiumUntill > request.time
request.time is a Timestamp 对象,不是以毫秒为单位的时间。它不能直接与整数进行比较。
如果你想在规则中使用request.time,你应该在文档字段中存储一个Firestore Timestamp 对象,以便直接比较。或者您可以先将规则时间戳转换为毫秒,然后再将其与整数进行比较。
我有以下代码,我想比较 2 个值并相应地设置规则,但显然两者之间没有一致性,至少比较不起作用问题是我想将所有时间戳存储在 ms 中.
// Data Filed set in cloud fuction.
const expiresIn = 3600; // test 1h //172800 === 48h
const createdAt = admin.firestore.Timestamp.now().toDate();
createdAt.setSeconds(createdAt.getSeconds() + expiresIn);
premiumUntill: admin.firestore.Timestamp.fromDate(createdAt).toMillis()
// Rules
&& request.auth.token.premiumUntill > request.time
&& resource.data.premiumUntill > request.time
request.time is a Timestamp 对象,不是以毫秒为单位的时间。它不能直接与整数进行比较。
如果你想在规则中使用request.time,你应该在文档字段中存储一个Firestore Timestamp 对象,以便直接比较。或者您可以先将规则时间戳转换为毫秒,然后再将其与整数进行比较。