Firebase 火基返回未进料
我一直得到一个返回函数未定义的响应。一秒钟后,console.log显示信息。我的猜测是,数据仍在收集中,函数已经返回。我原以为可以通过承诺来解决,但事实并非如此。我错过了什么?为什么我的函数返回时没有任何数据Firebase 火基返回未进料,firebase,promise,google-cloud-firestore,google-cloud-functions,Firebase,Promise,Google Cloud Firestore,Google Cloud Functions,我一直得到一个返回函数未定义的响应。一秒钟后,console.log显示信息。我的猜测是,数据仍在收集中,函数已经返回。我原以为可以通过承诺来解决,但事实并非如此。我错过了什么?为什么我的函数返回时没有任何数据 TakenSpaces = 0 let startDate = new Date(time) startDate.setHours(0) startDate.setMinutes(0) let endDate = new Date(startDat
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
}
我知道这很有效。但是如果有人知道函数是否只能在完成所有操作后返回,而不必返回承诺函数
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)
})
我会说去买东西。像函数async getTakenCapacity..
和insideconst reservations=wait db.collection(..
)。函数将等待承诺得到解决,并将保留分配给其结果。然后您可以同步进行,操作结果并返回所需内容。
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"
})