如何从snapshot.forEach循环获取数据并通过获取路径返回

问题描述 投票:0回答:2

我是firebase的新手,并且已经使用了node.js。基本上,我想要的是从集合“咖啡”中检索数据,并通过我的/ test路由发送数据,以便我可以在前端使用它。我不知道如何退还。

通过将返回值放入forEach循环中,我得到了它来返回第一个索引,但不返回列表的其余部分。但是我想列出整个列表。

//test route for database 
router.get("/test", (req, res) =>{
  // For loop goes thorugh our collection list and displays them in log. 
  db.collection('coffee').get().then((snapshot) => {
    let getCoffee = snapshot.forEach((doc) => {
      //console.log(doc.data());  
      const dataArray = [];
      dataArray.push(doc.data());
      console.log(dataArray);
    });
    return res.json(getCoffee);

  })
  .catch((err) => {
    console.log('Error getting documents', err);
  });


});

编辑后:


router.get("/test", (req, res) =>{    
  // For loop goes thorugh our collection list and displays them in log. 
  db.collection('coffee').get().then((snapshot) => {
    let getCoffee = snapshot.map((doc) => {
      return doc.data();
    });

    return res.json(getCoffee);

  })
  .catch((err) => {
    console.log('Error getting documents', err);
  });


});


node.js firebase express foreach return
2个回答
0
投票
let getCoffee = snapshot.map((doc) => {

      return doc.data();
});
return res.json(getCoffee);

0
投票

您的快照在'then'和'catch'块内按承诺运行。问题是您的外部get方法在内部promise完成之前就已经完成了。确保您返回承诺的结果,而不是仅仅兑现承诺。

© www.soinside.com 2019 - 2024. All rights reserved.