我正在使用Nodejs构建一个webapp并通过EJS模板生成HTML页面。我对初始页面加载/刷新很好,它按预期工作,它从firebase获取数据并填充。稍后更新firebase集合时,重新呈现不会发生无法在网页中看到新添加的数据,但在VSCode控制台中,我可以看到侦听器从firebase发布整个集合。
app.get('/feedback', (request, response) => {
var appRef = firebase.database().ref().child('ApplicationList');
var appList = {}, appNames = {};
appRef.on('value', function(snap) {
appList = snap.val();
console.log('appList', appList);
let keys = Object.keys(appList);
for(let i=0;i<keys.length;i++){
appNames[keys[i]] = appList[keys[i]].longName;
}
console.log('Keys = ',keys);
console.log('appNames = ',appNames);
response.render('feedback.ejs', {
pageTitle:'Feedback - Home',
pageID: 'feedbackhome',
pageName: 'Home',
appNames
});
});
});
答案 0 :(得分:0)
您必须在NodeJS服务器中使用websockets(例如Socket.io)来订阅这些更改,或者将Firebase监听器移动到客户端逻辑(如果需要,可以在更改中调用NodeJS应用程序中的某些端点)在服务器上执行某些操作。)
答案 1 :(得分:0)
感谢。我想在EJS中这样做,因为我不想使用createElement()创建带有复杂javascripting代码的webapp。因此决定通过车把进行客户端模板化。
var str = 'foo';
typeof str;
// result: "string"
str instanceof String;
// result: false
var Str = new String('bar');
typeof Str;
// result: "object"
Str instanceof String;
// result: true