0

CompoundJS アプリケーションの Mongo データベースにシード ファイルを設定しようとしていますが、実行するたびにcompound seed、console.log ステートメントの後で端末がハングします... データベースがいっぱいになり、Ctrl-c でコマンドを強制終了する必要があります。

やってみましcompound seed harvestたが、適切なシードファイルが作成されないため、自分で作成することにしました。これが私のそれぞれのコードです:

db/seeds/development/Host.js (シード ファイル)

console.log("Seeding Hosts....");

var hosts = [
  {
    hid: '1',
    name: 'MY API',
    domain: 'mydomain.com'
  }
];

hosts.forEach(function(obj, err){
  Host.create(obj, function(err, host){
    console.log('host Added: ', host);
  });
});

デシベル/schema.js

var Host = describe('Host', function () {
    property('hid', String);
    property('name', String);
    property('domain', String);
    set('restPath', pathTo.hosts);
});

config/database.js

module.exports = {
    development: {
        driver:   'mongodb',
        url:      'mongodb://localhost/apicache-dev'
    },
    test: {
        driver:   'mongodb',
        url:      'mongodb://localhost/apicache-test'
    },
    production: {
        driver:   'mongodb',
        url:      'mongodb://localhost/apicache-production'
    }
};

私が言ったように、実行するcompound seedと両方の console.log ステートメントが表示され、データがデータベースに入れられますが、ハングするだけです...実際にはコマンドラインに戻らないため、Ctrlで強制終了する必要があります-c。このプロセスを自動化する必要があるため、この問題を解決したいと思います。ハングしているだけでは自動化は少し難しいです。私は何を間違っていますか?どんな助けでも大歓迎です!

クロスポスト。

編集

したがって、から生成された Coffee スクリプト バージョンを使用しようとすると、次のようになりますcompound seed harvest

デシベル/シード/開発/Host.coffee

Host.seed ->
    hid: '1'
    name: 'MY API'
    domain: 'mydomain.com'
    id: "52571edd2ac9056339000001"

エラーコレクション名は String でなければなりません。だから私は少し興味があり、そのエラーが生成された場所に行きました... 103 行目の node_modules/jugglingdb-mongodb/node_modules/mongodb/lib/mongodb/collection.jsconsole.log(collectionName)で。その if ステートメントの前に右を置き、見ました興味深い出力...

{ hid: '1',
  name: 'MY API',
  domain: 'mydomain.com',
  id: NaN }

明らかに文字列ではなくハッシュ オブジェクトであり、コレクションの名前 ( Host ) はどこにも見えません。私にはバグのようです。

4

1 に答える 1

1

それで、私はついにそれを機能させました。どうやら、収穫コマンドから自動生成された ID に何か問題があったようです。そのため、その行を削除してしまいました。種をまくことは魔法のように働きます。残りの JS ファイルを Coffee スクリプト ファイルに変換したところ、すべてが機能しました。時々、インターネット上で自分自身と会話する必要があります...

ここに私のシードファイルがあります:

Host.seed ->
  hid: '1'
  name: 'MY API'
  domain: 'mydomain.com'

そして、compound seedハングすることなく動作し、データベースにデータを入力します。コーヒーのスクリプトが進むべき道だと思いますか?

于 2013-10-11T19:34:17.917 に答える