我是nodejs,angularjs和firebase世界的初学者。我正在尝试将数据加载到firebase中,但由于nodejs的异步性质而存在问题。 我的目的是从firebase搜索现有列表,如果有一些数据,那么将新元素添加到该列表并将其写回firebase。下面是我的代码,但我面临的问题有点奇怪。它工作正常,并继续向数组添加数据,直到我关闭正在运行的节点服务器。一旦我重新启动该节点服务器,由于nodejs的异步性质,它在从firebase获取数组数据之前首先向数组添加新元素。
我的问题是,我们如何限制这种情况发生?我基本上想要获取存储在firebase下的数组,并在firebase上添加一个值。我试图将我们从firebase收到的这些数据作为expressjs API的输出返回。
我们可以将此firebase视为一些WS API,它也可以为我们提供数据和插入数据。
请帮忙。
var ref = new Firebase('FIREBASE URL/'+req.query.id);
var list = [];
ref.on('value', function(snap) { list = snap.val();});
list.push(req.query.searchtext);
ref.set(list);
var result = {key: req.query.id, mainList: list};
res.json(result);
答案 0 :(得分:1)
"技巧"是将依赖操作置于回调中。因此,不要说"首先获取值,然后添加搜索文本,然后返回JSON响应",将其重新构造为"当我们获取值时,添加搜索文本并返回JSON响应& #34;
var ref = new Firebase('FIREBASE URL/'+req.query.id);
ref.once('value', function(snap) {
var list = snap.val();
list.push(req.query.searchtext);
ref.set(list);
var result = {key: req.query.id, mainList: list};
res.json(result);
});
请注意,我已从on()
更改为once()
,因为我担心您会在那里触发无限循环。如果情况并非如此,请随时改回来。