我要做什么
我目前正在为数据库设置Firebase Functions,为此,我正在使用TypeScript。 我正在尝试从数据库中获取一个节点。该节点是一个Map(即String的Map,Java中的bool)。问题是,从数据库中获取节点“ test”后,我试图遍历其成员,但出现错误
错误
TypeError:议程。forEach不是函数
at Object。 (\ firecast \ functions \ lib \ index.js:32:16)
在Generator.next()
已实现(\ firecast \ functions \ lib \ index.js:4:58)
在process._tickCallback(内部/process/next_tick.js:68:7)
我的设置
这是我设置数据库的方式:(抱歉,idk为什么图像嵌入无法正常工作,我将放置链接)
链接到图像:https://pasteboard.co/I7KogY2.png
这是我的完整功能:
export const getTest=
functions.https.onRequest(async (request,response)=>{
try{
const GlobalCalendar= await admin.firestore().doc("Calendar/GlobalCalendar").get()
const agenda=GlobalCalendar.data()!.test
const hours: any[]=[]
agenda.forEach((weekday: any) => {
hours.push(weekday)
});
response.send(agenda);
}
catch(error){
console.log(error)
response.status(500).send(error)
}
})
我尝试修复此问题
如果我注释掉
//常数小时:any [] = []
// schedule.forEach((工作日:任意)=> {
// hours.push(工作日)
//});
它将成功发送地图“议程”,我得到以下信息:
{ “四个”:是的, “一个”:是的, “三”:是的, “两个”:正确 }
结论
所以我知道我从数据库中正确获取了节点“ test”,但是问题是遍历此对象。似乎无论“议程”的类型是什么,它都没有“ forEach”功能。我按照Firebase youtube视频中的说明进行了操作,但是他们做了相同的工作,但与我的不同,他们的工作非常完美。
链接到视频:https://www.youtube.com/watch?v=Jr7pDZ1RAUg&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM&index=6
我的预期结果是能够遍历变量“ agenda”中的元素,该变量是图像中我的节点“ test”。
非常感谢您的时间!
答案 0 :(得分:0)
数据库中的字段test
是一个对象,而不是数组。您无法使用forEach迭代对象-它不会具有该方法或任何迭代器方法。如果要迭代对象的键和值,请try one of these options。