0

アプリを meteor クラウド サーバーにデプロイすると、このエラーが発生し続けました。

Meteor コードは常に _.extend.get (app/packages/meteor/dynamics_nodejs.js:14:13) のファイバー内で _.extend.apply (app/packages/livedata/livedata_server.js:1268:57) で実行する必要があります。 _.extend.call (app/packages/livedata/livedata_server.js:1229:17) で Meteor.startup.Meteor.methods.streamTwit (app/server/server.js:50:24) で

ただし、私はすでにファイバー内にラップしています

streamTwit: function (twit){
    var userid = '1527228696';
    twit.stream(
    'statuses/filter',
    { follow: userid},
      function(stream) {
          stream.on('data', function(tweet) {

          Fiber(function(){
            if(tweet.user.id_str === userid)
            {
              Meteor.call('addQn', tweet);
            }
          }).run();
              console.log(tweet);
              console.log('---------------------------------------------------------');
              console.log(tweet.user.screen_name);
              console.log(tweet.user.name);
              console.log(tweet.text);
          });
        }
      );
    }

理由はわかりませんが、代わりに Meteor.bindEnvironment でラップする必要があると誰かが提案しました。したがって、私はこれをしました:

streamTwit: function (twit){
    this.unblock(); // this doesn't seem to work
    console.log('... ... trackTweets');
    var _this = this;
    var userid = '1527228696';
    twit.stream(
    'statuses/filter',
    { follow: userid},
      function(stream) {
          stream.on('data', function(tweet) {

           Meteor.bindEnvironment(function () {
            if(tweet.user.id_str === userid)
            {
              Meteor.call('addQn', tweet);
            }
           }, function(e) {
             Meteor._debug("Exception from connection close callback:", e);
         });
              console.log(tweet);
              console.log('---------------------------------------------------------');
              console.log(tweet.user.screen_name);
              console.log(tweet.user.name);
              console.log(tweet.text);
          });
        }
      );
    }

//質問メソッドを追加

addQn:function(tweet){
      questionDB.insert({'tweet': tweet, 'date': new Date()});
    }

しかし、今では機能しません。これは、データを mongodb に挿入しようとしたときにのみ発生したことに気付きました。私のコードの問題は何ですか?ありがとう!これらのコードはすべて app/server/server.js に記述されています

4

1 に答える 1

0

Meteor.callサーバー側で使用する必要はありません。これは、クライアント側のコード専用です。直接呼び出すaddQnか、それよりも良いのは、1 行のコードであるため、インライン化することです。

于 2013-06-26T04:22:54.180 に答える