使用Node / Express从Firebase中读取数据

我是Node.JS / Express世界的初学者,所以我在这里要求一些帮助,以及如何实现我想要的。

我有这个中间件,我正在从Firebase中的数据库中读取数据,并将这些数据推送到一个对象数组中。 我的问题是:什么时候可以使用res.render来渲染视图并发送数据? 因为我总是得到“无法设置标题发送后”的错误,我知道原因,我只是无法找出解决这个问题的最好方法。

exports.regulation = (req, res, next) => { const collisions = []; const collisionsRef = firebase.database().ref('/collisions').once('value').then((data) => { data.forEach((elem) => { // console.log(elem.val()); const collision = {}; collision.id = elem.getKey(); collision.userId = elem.val().userId; const userRef = firebase.database().ref('/users/' + elem.val().userId).once('value').then((user) => { collision.user = user.val().name; collision.status = elem.val().status; collision.timestamp = elem.val().timestamp; collisions.push(collision); // console.log(collisions.length); }).catch((err) => { // next(err); }); }); // res.render('regulation', {collisions: collisions}); }); }; 

谢谢! 🙂

请求firebase和res.render函数将同步运行。 Async.js库函数可以用来同步运行函数。

 const collisions = []; function getData(callback) { const collisionsRef = firebase.database().ref('/collisions').once('value').then((data) => { data.forEach((elem) => { // console.log(elem.val()); const collision = {}; collision.id = elem.getKey(); collision.userId = elem.val().userId; const userRef = firebase.database().ref('/users/' + elem.val().userId).once('value').then((user) => { collision.user = user.val().name; collision.status = elem.val().status; collision.timestamp = elem.val().timestamp; collisions.push(collision); // console.log(collisions.length); }).catch((err) => { // next(err); }); }); callback(null, 'one'); } async.series([ getData, function(callback) { res.render('regulation', {collisions: collisions}); callback(null, 'two'); } ]);