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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Node,EJS和Firebase进行实时数据库模板化相关的知识,希望对你有一定的参考价值。

我是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>
    <% }); %>
答案

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

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

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

以上是关于使用Node,EJS和Firebase进行实时数据库模板化的主要内容,如果未能解决你的问题,请参考以下文章

firebase 和 node.js 的问题

Node JS+Express:如何在 HTML(EJS) 中定义和使用 MySQL 数据?

Firebase 实时数据库规则拒绝权限

如何使用 express .node 、 mongoose 和 ejs 删除对象

Firebase RTDB .gzip 和 Node JS 编码

将 Metabase 与 Firebase 实时数据库一起使用进行数据分析 [关闭]