带Node.js和Handlebar的Firebase实时数据库

带Node.js和Handlebar的Firebase实时数据库,node.js,firebase,firebase-realtime-database,handlebars.js,Node.js,Firebase,Firebase Realtime Database,Handlebars.js,我正在尝试在Node.js网站上制作一个实时更新源,它将从Firebase实时数据库中获取更新。我设法在页面打开时加载更新,但我正在努力使它们实时更新。具体来说:我不知道如何通过手柄传递数据库引用对象 现在,我使用以下工具从数据库中提取更新: const getUpdates = () => { return new Promise((resolve, reject) => { try { const ref = firebaseApp.database(

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

现在,我使用以下工具从数据库中提取更新:

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>
使用这种方法,行var更新={{{{json ref}}};抛出一个错误:

未捕获的语法错误:意外标记

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

{{{{json ref}}}}是把手/胡须模板,不是有效的javaScript代码。将该代码段直接放在脚本标记中,将其标记为JS代码

若要计算Handlebar表达式的值并使用javaScript将其分配给变量,可以尝试使用方法。比如:

var updates = Handlebars.compile('{{{json ref}}}');
在掌握了基本的车把示例之后,您可能还想看看。强烈建议在高负载生产环境中使用此选项

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