【发布时间】:2018-09-01 23:55:15
【问题描述】:
我要做的是拉出questsLeaderboard下的前3个,按score排序,然后用这些新的前3个替换questsTop中的现有子项。
所以如果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);
})
}
})
但它给出了超时错误。我能做什么?
【问题讨论】:
标签: node.js firebase firebase-realtime-database google-cloud-functions