Node.js Google Cloud函数无法与firestore.get()一起正常工作-NODE JS

Node.js Google Cloud函数无法与firestore.get()一起正常工作-NODE JS,node.js,firebase,google-cloud-firestore,google-cloud-functions,Node.js,Firebase,Google Cloud Firestore,Google Cloud Functions,我是一名网络开发新手。我目前正在Firebase上为一个博客项目工作 这是我的数据库结构: 在我的主页上,我使用这些代码从我的每个类别中获取一些最新的帖子 app.get('/test',(req,res)=>{ 异步函数getDocument(db){ const ex=await db.collection('Posts')。其中('category','=','Exercise')。orderBy('artID','asc')。limit(4)。get(); const hl=wait

我是一名网络开发新手。我目前正在Firebase上为一个博客项目工作

这是我的数据库结构:

在我的主页上,我使用这些代码从我的每个类别中获取一些最新的帖子

app.get('/test',(req,res)=>{
异步函数getDocument(db){
const ex=await db.collection('Posts')。其中('category','=','Exercise')。orderBy('artID','asc')。limit(4)。get();
const hl=wait db.collection('Posts')。其中('category','=','Health')。orderBy('artID','asc')。limit(2)。get();
const fl=wait db.collection('Posts')。其中('category','=','Food&lifesty')。orderBy('artID','asc')。limit(3)。get();
const md=await db.collection('Posts')。其中('category','==','Mindfulness')。orderBy('artID','asc')。limit(2)。get();
//const author=await db.collection('authors').doc(doc.data().author).get();
返回{
ex:ex.data(),
hl:hl.data(),
fl:fl.data(),
md:md.data()
}
}
getDocument(db).then(函数(数据){
res.send(数据);
})
})
我已经检查了代码,还确保在firestore中对查询进行了索引

但当我执行该函数时,浏览器抛出了一个错误:

错误:无法处理该请求

我在控制台中记录了这个错误

TypeError:ex.data不是函数
在getDocument(/workspace/index.js:69:14)
在进程中。_tick回调(内部/process/next_tick.js:68:7)

要从Firestore获取数据,需要放置“.data()”函数


有人能帮我找出我输入错误的地方吗?我想
的响应等待db.collection('Posts')。where('category','==','Exercise')。orderBy('artID','asc')。limit(4.get()
是一个
QuerySnapshot
-过滤器将匹配多个值,这就是为什么您无法访问
数据()
,因为存在多个对象


你应该做一些像
ex.docs.map(doc=>({id:doc.id,…doc.data()}))
我认为
的响应等待db.collection('Posts')。where('category','=','Exercise')。orderBy('artID','asc')。limit(4)。get()
是一个
QuerySnapshot
-过滤器将匹配多个值,这就是为什么您无法访问
数据()
,因为存在多个对象


您应该执行类似于
ex.docs.map(doc=>({id:doc.id,…doc.data()}))

的操作。根据前面提到的@stefan prokop cz,您需要从ex.docs映射每个文档快照。此外,您可能需要考虑使用<代码>约定>()(代码)>并行运行这些查询以提高计算时间。

> P>按@斯特凡PROKOP CZ所述,您需要从EX.DOCs映射每个文档快照。此外,您可能需要考虑使用<代码>承诺>()>代码>并行运行这些查询以提高计算时间。

好的,我理解我做错了什么,谢谢。好吧,我明白我做错了什么,谢谢。谢谢你们的回复。你能告诉我怎么做吗?非常感谢你的回复。你能告诉我怎么做吗?