如何在Node JS中获取Firebase云存储数据的地图?

时间:2020-01-03 14:10:53

标签: node.js google-cloud-firestore

实际上,我正在列出一个不一致的机器人列表,我想显示所有机器人,我使用ExpressNode.js。 我在firebase中的数据如下所示

db.collection("bots").doc("12345").set({
prefix:"?",
id:"12345",
server:"5"
})
db.collection("bots").doc("12346").set({
prefix:"-",
id:"12346",
server:"7"
});


const x = require ("express");
const router = x.Router ()
const {db} = require("../app");
  db.collection("bots").
get().then((querySnapshot) => { const x = require ("express");
const router = x.Router ()
const {db} = require("../app");
  db.collection("bots").where("approved", "==", false).
get().then((querySnapshot) => { 
    querySnapshot.forEach(function(doc) {
   const bot =  doc.data()
   console.log(bot. prefix)
      router.get("/",(req,res) => {
        res.send(bot.id+"=>"+bot.prefix)
                 })
    });
})

module.exports = router;

输出:

12345 => "?"

__ 预期输出

12345 => "?"
12346 => "-"

当我进行控制台操作时,它同时返回两个prefix 但是当我尝试渲染它时,它仅显示第一个。

2 个答案:

答案 0 :(得分:0)

如果您要显示文档列表,请按照getting all documents from a collection上文档中显示的食谱进行操作:

db.collection("bots").get().then((querySnapshot) => { 
    querySnapshot.forEach(function(doc) {
        console.log(doc.id, " => ", doc.data());
    });
})

我强烈建议研究该文档以及其余文档,因为它具有针对许多常见用例(例如本案例)的代码示例。

答案 1 :(得分:0)

我认为您需要在遍历快照后发送结果。 尝试这样的事情:

let results = []
querySnapshot.forEach(function(doc) {
    const bot =  doc.data()
    console.log(bot. prefix)
    results.push(bot.id+"=>"+bot.prefix)
});
router.get("/",(req,res) => {
    res.send(results.join('\n'))
})