我尝试在Node.js网站上制作实时更新Feed,以便从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:意外的令牌;
那么我做错了什么?我之前没有和Handlebars合作过,所以请原谅我的无知。
答案 0 :(得分:1)
{{{json ref}}} 是Handlebar / Mustache模板,而不是有效的javaScript代码。您将该片段直接放在&#34;脚本标记&#34;中,将其标记为JS代码。
如果要评估Handlebar表达式的值并使用javaScript将其分配给变量,可以尝试使用compile方法。类似的东西:
var updates = Handlebars.compile('{{{json ref}}}');
掌握基本的Handlebar示例后,您可能还想看看how to pre-compile templates。强烈建议在高负载生产环境中使用。