【发布时间】:2017-05-15 13:32:08
【问题描述】:
我正在尝试从 API 获取一些信息并将此信息保存到 mongodb 集合中,最后以反应方式显示此信息。当页面被加载时,它会完美地完成。如果我在 mongo 中进行手动更新,视图也会立即更改。但是第一次加载后,页面不再发出新请求,因此不再刷新外部数据。
我知道meteor 会查找内部数据更改,但我没有找到任何可以查找外部更改或循环发出请求的内容。
<template name="scanner">
{{#each scan}}
<img src="img/antenna.png" height="25" width="25" style={{position_scanner x y}}
id="{{addr}}" title="{{tip_text addr name}}" >
{{/each}}
</template>
Template.scanner.helpers({
scan: function() {
Meteor.call("get_scanners");
return Scanners.find({});
}
});
Meteor.methods({
get_scanners: function (){
var url = "http://192.168.60.154:5008/api-ot/scanners";
try {
var result = HTTP.get(url);
var statusCode = result.statusCode;
var data = result.data.scanners_list;
for (var x in data) {
var scanner = data[x];
Scanners.update({ addr: scanner.addr }, scanner, { upsert: true });
}
} catch (e) {
console.log("Cannot get scanner data");
}
}
});
【问题讨论】:
-
你想做什么?您希望多久刷新一次该外部 API?
-
我有一个返回某些信标数据的 API。我想得到这个信标的位置,然后在蓝图中打印。我不知道,也许每 10 秒刷新一次可能是一个不错的尝试。
-
是否需要在用户登录时继续刷新,还是仅在他们查看特定页面时继续刷新?相同的数据是否会发布给所有用户? (从您的代码看起来像)
-
事实上,只有一个用户,我希望刷新是不可阻挡的。
标签: meteor single-page-application