我是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>
<% }); %>
答案 0 :(得分:0)
这肯定是可能的,但这非常重要。
您需要在服务器和客户端之间建立连接,然后在服务器到达时将更新从服务器发送到客户端。 Firebase使用Web套接字来执行此操作,因此这似乎是一种逻辑方法。
但是如上所述:它非常复杂,你应该真的想知道这是否是你想要的方向。