我无法将数据从firebase显示到我的节点js客户端

时间:2018-01-21 01:56:15

标签: javascript node.js firebase firebase-realtime-database

我试图将存储在我数据库中的数据显示在客户端,但我很难搞清楚这一点。

我能够以终端以JSON格式在我的控制台中显示数据

e.g。

{ '-L32RrW6PaBF162cyfDv': { article: { body: 'Test Body', title: 'Test Title' } },
  '-L32UMeos7o2bwtPMVTF': { article: { body: 'test', title: 'test' } },.....

但是当我尝试在我的玉模板中使用for循环显示它时,似乎没有任何东西出现。我希望有人能指出我做错了什么。任何帮助,将不胜感激。感谢您,如果有人需要更多信息来回答这个问题,请告诉我。

这是我试图检索和显示数据的部分(所有路线都正常工作):

// Add Articles Route
router.get('/', (req, res, next) => {
  let ref = firebase.database().ref('articles')
  let articlesRef = ref.child('article')
  let articleRef = articlesRef.key
  articlesRef = ref.once('value')
    .then((snap) => {
      console.log(snap.val())
    })
  res.render('articles', {
    title: 'Add Article',
    articles: articlesRef
  })
})

这是玉模板文件。只有最后3行代码才能与此问题相关:

extends layout

block content
    .row
    h1 #{title}
    hr
    form(method='POST', action='/articles')
        #form-group
            label Title
            input.form-control(name='title', type='text')
        br
        #form-group
            label Body
            textarea.form-control(name='body')
            br
            input.btn.btn-primary(type='submit', value='Submit')
    br
    br
    ul
        each article in articles
            li= article

1 个答案:

答案 0 :(得分:2)

试试这个:

// Add Articles Route
router.get('/', (req, res, next) => {
  let ref = firebase.database().ref('articles')
  let articlesRef = ref.child('article')
  let articleRef = articlesRef.key
  articlesRef = ref.once('value')
    .then((snap) => {
      console.log(snap.val());
      res.render('articles', {
        title: 'Add Article',
        articles: snap.val()
      })
    })
})

您需要等待获取实际值,然后才能呈现它,从而将其移到then内并使用snap.val()