Я интегрирую сайт с Firebase. Я пытаюсь получить идентификаторы пользователей из моей коллекции пользователей в базе данных, а затем передать каждый из идентификаторов пользователей другой функции, которая получает данные опыта из другой коллекции. Я заказываю пользователей по имени, потому что хочу, чтобы пользователи сортировались по алфавиту на моей странице. Код работает так, как у меня, за исключением того, что обещания не разрешаются в правильном порядке и, следовательно, не выводятся в алфавитном порядке. Пожалуйста, смотрите детали ниже:
- Сначала я получаю пользователей с помощью функции getUserProfiles.
- я подтверждаю каждый идентификатор пользователя, распечатывая каждый индекс напрямую (пользователи [0], пользователи [1], пользователи [2]).
- Затем я перебираю каждого пользователя и записываю в журнал идентификатор пользователя до и после запроса к базе данных.
- Глядя на журналы консоли, похоже, что идентификаторы пользователя передаются в запрос к базе данных в правильном порядке, но второй идентификатор разрешается до первого идентификатора. первым идентификатором, переданным в базу данных, является 'ZKnqtLVzUqNqdzX9f8ap76LThh32'. Тем не менее, '482uR9t2QEdCUi0Z4nq14VRVhEx1' разрешается первым
Почему идентификаторы не разрешаются в том порядке, в котором они были переданы?
function getUserProfiles(){
//get users, usernames and render profiles
db.getUsers().then(users => {
console.log('first index:', users[0].id);
console.log('second index:', users[1].id);
console.log('third index:', users[2].id);
users.forEach(user => {
db.getLatestExperience(user.id).then(()=>{
})
})
}
Class {
getLatestExperience(id, callback) {
console.log('getLatestExperience before database request:', id);
return this.experience.where('userID', '==', id).orderBy('start','desc').get().then(snapshot => {
console.log('getLatestExperience promise resolved', id);
})
}
getUsers(callback) {
return this.users.orderBy('name').get().then(snapshot => {
return snapshot.docs;
})
}
}
first index: ZKnqtLVzUqNqdzX9f8ap76LThh32
second index: 482uR9t2QEdCUi0Z4nq14VRVhEx1
third index: 7bJBqk2gQBeTIZOY5h3FikO0Yqm2
getLatestExperience before database request: ZKnqtLVzUqNqdzX9f8ap76LThh32
getLatestExperience before database request: 482uR9t2QEdCUi0Z4nq14VRVhEx1
getLatestExperience before database request: 7bJBqk2gQBeTIZOY5h3FikO0Yqm2
getLatestExperience promise resolved: 482uR9t2QEdCUi0Z4nq14VRVhEx1
getLatestExperience promise resolved: ZKnqtLVzUqNqdzX9f8ap76LThh32
getLatestExperience promise resolved: 7bJBqk2gQBeTIZOY5h3FikO0Yqm2