我正在尝试运行ntwitter
流媒体API来跟踪有关某个主题标签的推文,并使用每条推文填充Mongo集合Tweets
。
我已经把服务器端连接起来了:
t = new nTwitter({
consumer_key: credentials.consumer_key,
consumer_secret: credentials.consumer_secret,
access_token_key: credentials.access_token_key,
access_token_secret: credentials.access_token_secret
});
Meteor.methods({
trackTweets: function () {
this.unblock; // this doesn't seem to work
console.log('... ... trackTweets');
var _this = this;
t.stream(
'statuses/filter',
{ track: ['#love'] },
function(stream) {
stream.on('data', function(tweet) {
// app/packages/mongo-livedata/collection.js:247
// throw e;
// ^
// O yes I love her like money
// Error: Meteor code must always run within a Fiber
console.log(tweet.text);
Tweets.insert(tweet.text); // this call blocks
});
stream.on('error', function(error, code) {
console.log("My error: " + error + ": " + code);
});
}
);
}
});
行Tweets.insert(tweet.text)
抛出must run inside its own Fiber error
- 我尝试将this.unblock
语句放在几个不同的地方。
我该怎么办?
答案 0 :(得分:1)
你没有调用函数unblock,你需要替换你的
this.unblock;
用这个:
this.unblock();
如果这不起作用,我认为它与ntwitter获取数据的方式有关,你可以尝试添加这个
if (Meteor.isClient) return false;
这样该方法不会在客户端上运行,而只能在服务器上运行
答案 1 :(得分:0)
我认为您运行服务器端的代码需要包含在光纤中。 在这些答案中可以找到一些类似的例子:
Meteor code must always run within a Fiber” when calling Collection.insert on server