使用Node,EJS和Firebase进行实时数据库模板

时间:2018-06-16 11:47:10

标签: node.js firebase express firebase-realtime-database ejs

我是Node JS的新手,我正在从客户端聊天应用迁移到服务器端应用。当我的应用程序只是客户端时,对数据库的任何更改都会触发数据再次加载到div中,从而为用户提供实时数据。我的问题是,使用EJS,我失去了实时功能。有没有办法保持实时功能?

app.js

const firebase = require("firebase");
const http = require("http");
const ejs = require("ejs");
const express = require("express")
const app = express();

app.set('view engine', 'ejs');

firebase.initializeApp({
    <MY-CREDENTIALS>
  });

firebase.database().ref("posts").once("value").then(function(snap) {
  posts = snap.val();
}).catch(function(err) {
  console.log("Error: " + err);
});

app.get('/', function(req, res) {
    res.render('pages/index', {"posts": posts});
});

app.listen(8080);

console.log('Listening on 8080');

index.ejs

<% Object.keys(posts).forEach(function(key) { %>
      <div class='post'>
        <h4 class='body'><%- posts[key].body %></h4>
      </div>
      <br>
    <% }); %>

1 个答案:

答案 0 :(得分:0)

这肯定是可能的,但这非常重要。

您需要在服务器和客户端之间建立连接,然后在服务器到达时将更新从服务器发送到客户端。 Firebase使用Web套接字来执行此操作,因此这似乎是一种逻辑方法。

但是如上所述:它非常复杂,你应该真的想知道这是否是你想要的方向。