Как я могу получить массив "retArr" из этой функции запроса коллекции Firebase.Я хочу, чтобы значения массива использовались для другой функции - PullRequest
0 голосов
/ 09 июня 2018
db.collection("City").get().then(function(querySnapshot) {
    querySnapshot.forEach(function(doc) {
    db.collection("users").where("City", "==", doc.id).get().then(function(querySnapshot) {
        var jgy_usercount = querySnapshot.size;
        retArr.push(jgy_usercount);
      });
    });
});

RetArr имеет количество пользователей на город, которое хранится в массиве.этот массив мне нужно использовать в другом месте вне функции.Как можно получить это?

1 Ответ

0 голосов
/ 09 июня 2018

Вы можете сделать что-то вроде этого:

async function getUsersPerDistrict() {
  const querySnapshot = await db.collection("district").get()
  const districts = []
  querySnapshot.forEach(x => { districts.push(x.data) })
  const districtCounts = await Promise.all(
    districts.map(async x => {
      const usersFromDistrict = await db.collection("users").where("City", "==", x.id).get()
      return { count: usersFromDistrict.size, name: x.name }
    })
  )

  return districtCounts
}

Без асинхронного / ожидание:

function getUsersPerDistrict() {
  return db.collection("district").get().then(querySnapshot => {
    const districts = []
    querySnapshot.forEach(x => { districts.push(x.data) })
    const districtCounts = Promise.all(
      districts.map(x => 
        db.collection("users").where("City", "==", x.id).get()
          .then(usersFromDistrict => ({
             count: usersFromDistrict.size,
             name: x.name
          }))
      )
    )
    return districtCounts
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...