我想创建一个页面,从Firebase加载多个数据集,然后将它们传递到NodeJS呈现页面。我很感谢一些帮助,确保在forEach迭代之后发生这种情况;即,我不确定如何让Firebase for each迭代成为我承诺的一部分。等待Firebase数据加载之前呈现NodeJS页面forEach之前与Promise.all()
非常感谢!
router.get('/', function(req, res, next) {
var getBrands = brandRef.once('value').then(function(snapshot){
var brands = [];
snapshot.forEach(function(childSnapshot){
console.log(childSnapshot.val()['name']);
brands.push({'name' : childSnapshot.val()['name'] });
});
return brands;
});
var getStores = storeRef.once('value').then(function(snapshot){
var stores = [];
snapshot.forEach(function(childSnapshot){
stores.push({'name' : childSnapshot.val()['name'] });
});
return stores;
});
var getProducts = productRef.once('value').then(function(snapshot){
var products = [];
snapshot.forEach(function(childSnapshot){
products.push({'name' : childSnapshot.val()['name'] });
});
return products;
});
console.log(brands, stores, products);
Promise.all([getBrands, getStores, getProducts]).then(function(results){
res.render('index', { title: 'MStore Demo Portal', stores: results[0], brands: results[1], products: results[2] });
});
});
看到我的答案 - 你可以从字面上刚刚从后台移到此代码前端,你是正在合并来自数据库的结果。 –
这些'snapshot's数组,或者它是一个自定义(甚至是异步)'forEach'方法吗? – Bergi
@Bergi,这是快照的内置Firebase forEach功能。 –