【问题标题】:Firebase Realtime database with Node.js and Handlebars带有 Node.js 和 Handlebars 的 Firebase 实时数据库
【发布时间】:2018-04-26 11:31:05
【问题描述】:

我正在尝试在 Node.js 网站上制作实时更新提要,以便从 Firebase 实时数据库中提取更新。我设法在页面打开时加载更新,但我正在努力让它们实时更新。具体来说:我不知道如何通过 Handlebars 传递数据库引用对象。

所以现在我从数据库中提取更新:

const getUpdates = () => {
  return new Promise((resolve, reject) => {
    try {
        const ref = firebaseApp.database().ref('liveUpdates');
        resolve(ref.once("value"), ref);
    } catch (e) {
        reject(e);
    }
  });
};

然后渲染页面:

exports.loadDashboard = (req, res) => {
  getUpdates().then((updates, ref) => {
    const updatesList = updates.val();
    res.render('index', { updatesList, ref });
    return;
  });
};

然后我想在 .hbs 文件中做这样的事情:

<script>
  var updates = {{{json ref}}};
  updates.on("value" () => {
    //Handle update
  });
</script>

json Handlebars 助手:

json: (content) => {
  return JSON.stringify(content);
}

使用这种方法,行 var updates = {{{json ref}}};抛出错误:

Uncaught SyntaxError: Unexpected token ;

那我做错了什么?我以前很少使用 Handlebars,所以请原谅我的无知。

【问题讨论】:

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


    【解决方案1】:

    {{{json ref}}} 是 Handlebar/Mustache 模板,不是有效的 JavaScript 代码。您将 sn-p 直接放在“脚本标签”中,将其标记为 JS 代码。

    如果您想评估 Handlebar 表达式的值并使用 javaScript 将其分配给变量,您可以尝试使用 compile 方法。比如:

    var updates = Handlebars.compile('{{{json ref}}}');
    

    掌握基本的 Handlebar 示例后,您可能还想看看 how to pre-compile templates。强烈建议将其用于高负载生产环境。

    【讨论】:

      猜你喜欢
      • 2019-07-22
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 2020-12-31
      • 2020-10-29
      • 1970-01-01
      相关资源
      最近更新 更多