Firebase未定义返回

时间:2020-01-31 21:08:20

标签: firebase promise google-cloud-firestore google-cloud-functions

我一直用return函数得到一个不确定的响应。一秒钟后,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 :(得分:0)

知道有效。但是,如果有人知道函数是否只能在完成所有操作后返回,而不必返回promise函数。

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"
  })
相关问题