Как удалить кеш firebase на firebase-admin (nodejs)? - PullRequest
0 голосов
/ 29 ноября 2018

Я делаю игру, в которой мне нужно POI на карте.Для каждой игры я создаю 10000 POI.Каждый раз, когда я создаю игру, мой сервер узлов создает 10000 POI и публикует их в базе данных Firebase.(10000 - это просто большое число, чтобы показать мою проблему)

Моя проблема в том, что firebase 'js' кэширует все эти объекты, и у меня есть утечка памяти.

Как я могу заставитьFirebase уничтожить свои тайники?Мне не нужны эти данные на стороне nodejs, а только на стороне клиента?

Это функция, которую я использую для ее создания.Я попытался упростить это.

export async function addRandomPois(gameId) {
    const numberOfPoiToBeGeneratedPerKM: number = 10000;
    const sizeInKm = 2;
    const numberOfPoiToBeGenerated = numberOfPoiToBeGeneratedPerKM * sizeInKm;

    const gameData = await GameFirebaseRef.get()
    const game = gameData.data();
    const batches = {0: FirebaseStore.batch()};
    let batchNum = 0;

    for (var n = 0; n < numberOfPoiToBeGenerated; n++) {
        if (n > 0 && n % 500 === 0) {
            // batches cannot have more than 500 operation. So I create as much as needed
            batches[batchNum]
                .commit()
                .then(i => delete batches[batchNum]);
            batchNum++;
            batches[batchNum] = FirebaseStore.batch();
        }
        const generatedRandomPoint = pointInCircle(game.currentCircle.center, game.nextCircle.size);
        const generatedPOI = {
            icon: randomIcon(),
            position: generatedRandomPoint
        }
        const ref = firebasePOIREF.doc(guid());
        batches[batchNum].set(ref, generatedPOI)
    }
    return batches[batchNum].commit()
        .then(i => console.log(`${gameId} : randomly poi generation terminated`))
}
...