【发布时间】:2014-09-18 03:36:07
【问题描述】:
getTime: function () {
host="http://www.xxxxxx.com/";
res= Meteor.bindEnvironment(function(){
var Fiber = Meteor.require('fibers');
var Future = Meteor.require('fibers/future');
var future = new Future();
request(host, function (error, response, body) {
Fiber(function(){
if (!error && response.statusCode == 200) {
$ = cheerio.load(body);
var $thumbs = $('.thumb');
for (var i = 0, l = $thumbs.length ; i < l ; i++) {
// elements
var $thumb = $($thumbs[i]);
// save info
videourl=host+$thumb.find('a').attr('href');
videothumbs = [$thumb.find('img').attr('src')];
videos=Videos.insert({title:videoTitle,thumbs:videothumbs,lastUpdated:Date.now()});
}
return videos;
}
else {
return "error";
}
}).run()
});
}) ;
return res;
}
这是一个服务器端方法并返回undefined
如果没有 bindenvironment,使用 bindenvironemnt 会返回错误。
我是否正确使用它,有人可以告诉我我的代码中的修改
【问题讨论】:
-
你应该在某处调用包装函数,所以你可能需要
res()。另外,你得到了什么确切的错误以及你在哪里使用这个getTime函数? -
使用 Meteor HTTP.get 同步版本 (docs.meteor.com/#http_call) 而不是 npm 请求,您不需要所有的 Fiber 东西。