【发布时间】:2017-05-13 04:53:14
【问题描述】:
我正在尝试创建一个从 Firebase 加载多个数据集的页面,然后将它们传递给 NodeJS 呈现的页面。我会很感激一些帮助,以确保在 forEach 迭代之后发生这种情况;也就是说,我不确定如何让 Firebase forEach 迭代成为我的承诺的一部分。
非常感谢!
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] });
});
});
【问题讨论】:
-
看我的回答——你可以把这段代码从后端移动到前端,你所做的就是合并数据库中的结果。
-
那些是
snapshots 数组,还是自定义(甚至是异步)forEach方法? -
@Bergi,这是用于快照的内置 Firebase forEach 函数。
-
如果是异步的,怎么知道什么时候完成?
标签: javascript node.js asynchronous firebase promise