У меня есть следующий код, и я хочу сравнить 2 значения и установить правила соответственно, но, по-видимому, между ними нет согласованности, по крайней мере, сравнение не работает, потому что я хочу, чтобы все временные метки хранились в мс.
// 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 в правилах, вы должны сохранить объект Firestore Timestamp в поле документа для прямого сравнения. Или вы можете сначала преобразовать временную метку правила в миллисекунды, прежде чем сравнивать ее с целым числом.
Перейдите к документам API, на которые я ссылался для Timestamp, чтобы узнать, как его использовать.
Как преобразовать временную метку правил в миллисекунды? как это ? request.time.toMillis() внутри правил, если это так, то правила имеют доступ к классному методу?