我想在Tweets集合中插入来自使用Twit(npm模块)制作的流中的每个推文,在方法中。
stream: function(hashtag) {
//Création du stream
stream = T.stream('statuses/filter', { track: hashtag });
var currentHashtag = hashtag;
// Lance le stream
stream.on('tweet', function (tweet) {
var userName = tweet.user.screen_name;
var userTweet = tweet.text;
var tweetDate = tweet.created_at;
var profileImg = tweet.user.profile_image_url;
console.log(userName+" a tweeté: "+userTweet+" le: "+tweetDate);
console.log("=======================");
Tweets.insert({user: userName, tweet: userTweet, picture: profileImg, date: tweetDate, hashtag: currentHashtag}, function(error) {
if(error)
console.log(error);
});
});
}
这是我的错误消息: [错误:流星代码必须始终在光纤内运行。尝试使用Meteor.bindEnvironment包装传递给非Meteor Libraries的回调。 ]
我尝试了不同的解决方案,比如在Fiber()中包含Collection插入,我尝试使用Meteor.bindEnvironment,但从不了解如何正确使用它。
你能帮助我吗?
=============================================== ====
我试过这个。使用此代码,我不再有任何错误,但推文不会插入我的收藏中。
stream.on('tweet', Meteor.bindEnvironment(function(tweet) {
var tweetToInsert = {
user: tweet.user.screen_name,
tweet: tweet.text,
picture: tweet.user.profile_image_url,
date: tweet.created_at,
hashtag: currentHashtag
};
console.log(tweetToInsert.user+" a tweeté: "+tweetToInsert.tweet+" le: "+tweetToInsert.date+" \n "+tweetToInsert.picture+"\n"+tweetToInsert.hashtag);
console.log("=======================");
Tweets.insert(tweetToInsert, function(error, result) {
if(error)
console.log(error);
else
console.log(result);
});
}));
答案 0 :(得分:5)
您可以在插入时运行光纤:
var Fiber = Npm.require('fibers');
Fiber(function () {
Tweets.insert({user: userName, tweet: userTweet, picture: profileImg, date: tweetDate, hashtag: currentHashtag}, function(error) {
if(error)
console.log(error);
});
}).run();