试图将数组添加到firebase,但由于nodejs没有异步特性而出现问题
Trying to add array to firebase but having issue because no async nature of nodejs
我是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);
"诀窍"是将依赖操作放入回调中。因此,与其说"首先获取值,然后添加搜索文本,然后返回JSON响应",不如将其重新定义为"当我们获取值时,添加搜索文本并返回JSON响应。"。
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()
,因为我担心你会在那里触发一个无限循环。如果不是这样的话,当然可以随意更改。
相关文章:
- JavaScript异步问题
- javasctipt-返回值的异步问题
- 直接 Web 远程处理异步问题
- Javascript奇怪的行为,异步问题
- AngularJS:下载二进制图像时出现异步问题
- 请求Javascript/Angular遇到异步问题
- 猫鼬 + 节点.js:异步问题
- JavaScript 访问 Angular 范围返回“未定义” - 异步问题
- Javascript Hacker News API 的异步问题
- 阵列的异步问题
- 通过异步问题使用jQuery$.ajax从MysQL检索数据
- Node.js get请求问题(异步问题?)
- 为什么在React's #setState中使用函数来解决异步问题?
- Jquery /javascript播放/停止异步问题
- 将数据传递给node.js回调——异步问题
- webdriver.IO异步问题-点击一个元素,然后输入文本
- 访问全局变量和异步问题
- jQuery的执行顺序使用$.load()异步问题(bootstrap modal)
- JSONP使用-范围或异步问题?使用JQuery
- Javascript esriRequest (dojo)在函数异步问题