1

動的にすることが望ましいため、データベースに格納されたリストから制限された単語のメモリ内リストを作成したいと考えています。シンプルですね。いいえ、そうではありません!なんで ?

これは短いコードです:

if (Meteor.isServer) {
  Meteor.startup(function() {

    var configCollection = new Mongo.Collection('config');

    // An wrapper object for easy referencing
    var words = {
      faulty: ['f_word_here']
    }; // Some default faulty words

    var updateFaultyWords = function() {
      var config = configCollection.findOne();
      if (config) {
        words.faulty = config.faultyWords;
      }
    };

    // ------- Problematic Code ------

    Tracker.autorun(function() {
      updateFaultyWords();
    });


    // -------------------------------

    // later somewhere in the code

    var allowWord = function(word) {
      return words.faulty.indexOf(word) === -1;
    };
  });
}

ドキュメントにあるように、リストをリアクティブモードで更新したいので、ここでトラッカーを使用しています。

Tracker.autorun を使用すると、リアクティブ データ ソースに依存する関数を実行できます。これらのデータ ソースが新しいデータで更新されるたびに、関数が再実行されます。

ただし、このメソッドは、理解できないスタック トレースで長時間クラッシュします。

W20151209-17:36:55.802(1)? (STDERR)           
W20151209-17:36:55.802(1)? (STDERR) /Users/tiberiu/.meteor/packages/meteor-tool/.1.1.10.1b51q9m++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:245
W20151209-17:36:55.802(1)? (STDERR)                         throw(ex);
W20151209-17:36:55.803(1)? (STDERR)                               ^
W20151209-17:36:55.865(1)? (STDERR) Error: Can't call yield in a noYieldsAllowed block!
W20151209-17:36:55.865(1)? (STDERR)     at Function.Fiber.yield (packages/meteor/fiber_helpers.js:8:1)
W20151209-17:36:55.865(1)? (STDERR)     at Function.wait (/Users/tiberiu/.meteor/packages/meteor-tool/.1.1.10.1b51q9m++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:183:14)
W20151209-17:36:55.865(1)? (STDERR)     at Object.Future.wait (/Users/tiberiu/.meteor/packages/meteor-tool/.1.1.10.1b51q9m++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:397:10)
W20151209-17:36:55.865(1)? (STDERR)     at [object Object]._.extend._nextObject (packages/mongo/mongo_driver.js:986:1)
W20151209-17:36:55.865(1)? (STDERR)     at [object Object]._.extend.forEach (packages/mongo/mongo_driver.js:1020:1)
W20151209-17:36:55.866(1)? (STDERR)     at [object Object]._.extend.map (packages/mongo/mongo_driver.js:1030:1)
W20151209-17:36:55.866(1)? (STDERR)     at [object Object]._.extend.fetch (packages/mongo/mongo_driver.js:1054:1)
W20151209-17:36:55.866(1)? (STDERR)     at [object Object].Cursor.(anonymous function) [as fetch] (packages/mongo/mongo_driver.js:869:1)
W20151209-17:36:55.866(1)? (STDERR)     at [object Object].MongoConnection.findOne (packages/mongo/mongo_driver.js:776:1)
W20151209-17:36:55.867(1)? (STDERR)     at [object Object]._.extend.findOne (packages/mongo/collection.js:305:1)

私は何を間違っていますか?これをバグとして報告する必要がありますか?

4

1 に答える 1