Огненная база, возвращающаяся неопределенной - PullRequest
0 голосов
/ 01 февраля 2020

Я получаю неопределенный ответ с помощью функции возврата. Через секунду console.log отображает информацию. Я предполагаю, что данные все еще собираются и функция уже возвращается. Я думал, что это будет решено с обещанием, но это не так. Что мне не хватает? почему моя функция возвращается без данных?

    TakenSpaces = 0
    let startDate = new Date(time)
    startDate.setHours(0)
    startDate.setMinutes(0)
    let endDate = new Date(startDate)
    endDate.setHours(24)
    data = []
    const reservations = db.collection('organisation').doc('Amigos').collection('reservations')
    .where('start', '>=', startDate)
    .where('start', '<=', endDate).get()
    console.log('promse made')
    reservations.then((docs) => {
      // console.log(docs.data())
      // return docs.data()
      // const promises = []
      docs.forEach((doc) => {
        data.push(doc.id)
      })
      // console.log(data)
      // console.log('DONE TESTING')
      return data
        // return Promise.all(promises)
    })
    .then((test) => { console.log(test); return test })
  // for (const reservation of reservations) {
  //   console.log(reservation)
  // }
    // .then((docs) => {
    //   // for (const doc of docs) {
    //   //   console.log(doc.id)
    //   // }
    //   docs.forEach((doc) => {
    //     if (doc.data().people){
    //       const people = doc.data().people
    //       TakenSpaces = TakenSpaces + people
    //     }
    //     // console.log(doc.data().people)
    //   });
    //   return TakenSpaces
    // })
  // return TakenSpaces
}
  const t = getTakenCapacity(time)
  console.log(t)

1 Ответ

0 голосов
/ 01 февраля 2020

Работает знаю. Но если кто-то знает, может ли функция вернуться только тогда, когда все закончено и не должна возвращать функцию обещания.

function getTakenCapacity (time) {
    TakenSpaces = 0
    let startDate = new Date(time)
    startDate.setHours(0)
    startDate.setMinutes(0)
    let endDate = new Date(startDate)
    endDate.setHours(24)
    data = []
    const reservations = db.collection('organisation').doc('Amigos').collection('reservations')
    .where('start', '>=', startDate)
    .where('start', '<=', endDate).get()
    return reservations.then((docs) => {
      // console.log(docs.data())
      // return docs.data()
      // const promises = []
      var dd = new Array
      docs.forEach((doc) => {
        data.push([[time], doc.data().people])
      })
      // console.log(data)
      // console.log('DONE TESTING')
      return data
        // return Promise.all(promises)
    })
  getTakenCapacity(time).then(function(result) {
    console.log(result) // "Some User token"
  })
...