То, что я хочу сделать, это вытащить верхнюю тройку в questsLeaderboard
, отсортированную по score
, а затем заменить существующих потомков в questsTop
этими новыми верхними 3.
Так что если questsLeaderboard
выглядит так:
- questsLeaderboard
- uid1
- score: 12
...
- uid2
- score: 3
...
- uid3
- score: 10
...
- etc
И я хочу questsTop
выглядеть так:
- questsTop
- first
- score: 12
...
- second
- score: 10
...
- third
- score: 3
...
Я пробовал это:
export const updateBoards = functions.https.onRequest((req, res) => {
let questsArr = [];
const questsRef = db.ref('questsLeaderboard');
const questsTopRef = db.ref('questsTop');
questsRef.orderByChild('score').limitToLast(3).on('child_added', (snapshot) => {
questsArr.unshift(snapshot);
});
if (questsArr.length === 3) {
questsTopRef.set({
first: questsArr[0],
second: questsArr[1],
third: questsArr[2]
})
.then(() => {
res.status(200).send('top quests set');
})
.catch(err => {
res.status(500).send(err);
})
}
})
Но это дает ошибку тайм-аута. Что я могу сделать?