How to fix "Error: Can't wait without a Fiber" when I query mongodb?

I am trying to query my database to grab a name of a beer and brewery, but when I start meteor and I tweet to my twitter bot I get this error: Can’t wait without a fiber. Am I using Meteor.wrapAsync correctly?

if (Meteor.isServer) {
  Meteor.startup(function () {
    // code to run on server at startup

    var Twit = Meteor.npmRequire('twit');

    var T = new Twit({
      consumer_key: '',
      consumer_secret: '',
      access_token: '',
      access_token_secret: '',
    });

// Setting up a user stream
var stream = T.stream('user');

// Anytime someone tweets me
stream.on('tweet', tweetEvent);

function tweetEvent(eventMsg) {
  // get a tweet!
  // var fs = require('fs');
  // var json = JSON.stringify(eventMsg,null,2);
  // fs.writeFile("tweet.json", json);

  var replyto = eventMsg.in_reply_to_screen_name;
  var text = eventMsg.text;
  var from = eventMsg.user.screen_name;
  var time = eventMsg.created_at;
  // var ranNum = Math.floor((Math.random() * 100) + 1);

  var beerdbData = Meteor.wrapAsync(Beerdb.find().fetch());

  beerdbData.forEach(function(brew) {
      var brewery = Meteor.wrapAsync(brew.brewery)
      var beer = Meteor.wrapAsync(brew.beer[0])
  });

  var beer = 'beer'
  var brewery = 'brewery'

  var randomBeer = [
      '@' + from + ' Try a nice cold ' + beer + ' by ' + brewery + '.',
      '@' + from + ' My sensors indicate you will like ' + beer + ' by ' + brewery + '.',
      '@' + from + ' Sit back and relax with ' + beer + ' by ' + brewery + '.',
      '@' + from + ' Wet your whistle with ' + beer + ' by ' + brewery + '.',
      '@' + from + ' Good things come to those who drink ' + beer + ' by ' + brewery + '.',
      '@' + from + ' Drink ' + beer + ' by ' + brewery + ', it will make you stronger.',
      '@' + from + ' Keep calm and drink ' + beer + ' by ' + brewery + '.',
      // '@' + from + ' ',
    ];

  var randomTweetTwo = [
      '@' + from + ' It’s BEER. Hooray beer!',
      '@' + from + ' 🍺',
      '@' + from + ' http://gph.is/1MWsstV?tc=1 via @giphy',
      '@' + from + ' I am made with 10% recycled beer.',
      '@' + from + ' Beer. Because milk is for babies.',
      '@' + from + ' 01100010 01100101 01100101 01110010',
      // '@' + from + ' ',
    ];

// The bot sends out a random beer from the db
  if (text === '@mbbtest beer me'){
    var newtweet = randomBeer[Math.floor(Math.random()*randomBeer.length)]

    tweetIt(newtweet);
  }

    if (text === '@mbbtest 🍺'){
    var beerTweet = randomTweetTwo[Math.floor(Math.random()*randomTweetTwo.length)]

    tweetIt(beerTweet);
  } 
console.log(from + ' ' + time);
}

//The trigger to tweet
function tweetIt(txt) {

  var tweet = {
    status: txt
  }

  T.post('statuses/update', tweet, tweeted);

  function tweeted(err, data, response) {
    if (err) {
      console.log('error:', err);
    } else {
      console.log("It worked!");
    }
  }
}

  });
}
1 Like