Я пытаюсь ранжировать своих пользователей на основе значения, для этого я пытаюсь выполнить итерацию по списку после упорядочивания по значению под названием «Earned_points», однако я получаю сообщение об ошибке dataSnapshot.numChildren is not a function.
Вот как выглядит мой код
return rankref.orderBy("earned_points").limit(10).get().then(function(dataSnapshot) {
let i = 0;
console.info(dataSnapshot)
dataSnapshot.forEach(function(childSnapshot) {
const r = dataSnapshot.numChildren() - i;
console.info(childSnapshot)
updates.push(childSnapshot.ref.update({rank: r}));
leaderboard[childSnapshot.key] = Object.assign(childSnapshot.val(), {rank: r});
i++;
});
updates.push(leaderboardRef.set(leaderboard));
return Promise.all(updates);
Это должно добавить ранг к каждому дочернему снимку, а затем создать новый узел, называемый таблицей лидеров.
Есть идеи, почему я получаю это? я только что переключился с базы данных в реальном времени на firestore и не знаю, что происходит



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


i just switched from realtime database to firestore and don't know what's going on
В firestore нет DataSnapshot, firestore использует концепции коллекций и документов.
Метод numChildren() находится внутри класса DataSnapshot.
Метод get() находится внутри класса CollectionReference и возвращает QuerySnapshot, поэтому вы получаете ошибку dataSnapshot.numChildren is not a function.
Пример получения всех документов в коллекции:
db.collection("cities").get().then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
// doc.data() is never undefined for query doc snapshots
console.info(doc.id, " => ", doc.data());
});
});
Проверь это:
https://firebase.google.com/docs/firestore/query-data/get-data