Я уже задавал вопросы по этому вопросу и все еще немного застрял. Я пытаюсь решить следующее:
- Всякий раз, когда документ добавляется, его необходимо обновить через некоторое время (2 часа)
Как я сейчас решаю это:
- я создаю временную метку при создании документа с помощью onCreate
- добавляю документ в массив
- У меня есть другая функция https, которая запускается каждую 1 минуту (как задание cron), которая проверяет элементы в массиве и сравнивает текущую временную метку с временной меткой документа (которая является переменной в базе данных)
Код, который у меня есть, следующий:
const array = []
export const onTimerCreate = functions.firestore
.document(`Message/{UserId}/{ChatRoomId}/{UserId_1}`)
.onCreate((snapshot, context) => {
const timestamp = admin.firestore.Timestamp.now().seconds
array.push(snapshot)
return snapshot.ref.update({ creationTime: timestamp})
})
export const testDelay = functions.https.onRequest((request, response) => {
const timestamp = admin.firestore.Timestamp.now().seconds
array.forEach( snapshot => {
const data = snapshot.data()
const time = data.creationTime
const delay = (data.delay) / 1000
const actualTime = time + delay
console.log(array)
if (actualTime > timestamp) {
return snapshot.ref.update({ delay : 0})
}
})
})
Однако проблема заключается в том, что запрос истекает через 60 секунд. Я думаю, что происходит, что я не добавляю документ должным образом, так как массив, в который я добавляю вещи с помощью первой функции, не содержит данных. Однако я не уверен, как это исправить. Помощь будет оценена.