Вызов переменной orderByValStr
, предполагает, что вы намереваетесь использовать orderByValue()
, а не orderByKey()
.
Если вы использовали Callable Cloud Functions для Firebase , используя асинхронный Синтаксис / ожидание имеет смысл. Однако для облачных функций HTTP-событий для Firebase , которые вы здесь используете, они подходят для использования с API обещаний.
exports.testRateLimiter =
functions.https.onRequest((req, res) => {
const ref = db.ref('rateLimiter/test');
const time = Date.now()
const timeStr = time.toString()
ref.push(timeStr)
const startTime = Date.now()-60000
ref.orderByValue().startAt(startTime).once("value")
.then(snapshot => {
console.log(snapshot.numChildren()); // log children instead
// do the thing
})
.catch(error => {
if (!res.headerSent) {
res.sendStatus(500);
}
console.log('Error: ', error);
});
});
Я бы рассмотрел возможность использования firebase-functions-rate-limiter
, как он обрабатывает для вас очистку. Я рекомендую просмотреть его исходный код и узнать, что на нем можно.