Это возможно, если вы храните даты в Firebase. Есть несколько способов сделать это, но независимо от того, что вы выберете, я бы порекомендовал вам сделать это вне клиента . Это не очень хорошая идея, чтобы удалить то, что потенциально много данных на стороне клиента. Вы можете настроить работу cron с сервера, которым вы управляете. Вы периодически запускаете задание и используете Admin SDK для доступа и удаления данных.
У вас есть запрос к документам, как в следующем примере:
let query = ref.collection('collectionname').where('timestamp', '<', {variable with the time frame goes here})
Затем вы можете использовать пакетное удаление, как показано в разделе удалить данные документов .
function deleteCollection(db, collectionPath, batchSize) {
var collectionRef = db.collection(collectionPath);
var query = collectionRef.where('timestamp', '<', {variable with the time frame goes here});
return new Promise((resolve, reject) => {
deleteQueryBatch(db, query, batchSize, resolve, reject);
});
}
function deleteQueryBatch(db, query, batchSize, resolve, reject) {
query.get()
.then((snapshot) => {
// When there are no documents left, we are done
if (snapshot.size == 0) {
return 0;
}
// Delete documents in a batch
var batch = db.batch();
snapshot.docs.forEach((doc) => {
batch.delete(doc.ref);
});
return batch.commit().then(() => {
return snapshot.size;
});
}).then((numDeleted) => {
if (numDeleted === 0) {
resolve();
return;
}
// Recurse on the next process tick, to avoid
// exploding the stack.
process.nextTick(() => {
deleteQueryBatch(db, query, batchSize, resolve, reject);
});
})
.catch(reject);
}
Это всего лишь общий пример, поэтому вам придется настроить его в соответствии со своей структурой данных и потребностями, но в нем изложена идея. Вы можете проверить больше информации по ссылке, которую я включил выше.