2016-11-01 13 views
0

mongoシェルでは、ユーザーのコレクションは表示されません。私がdb.users.find()と入力すると、私のコレクションは表示されません。どちらかのコレクションを表示しようとすると、それは存在しません。 (例えばcreate())、その機能を呼び出すときに、マングースモデルにコールバックを通過しない場合はマングースでコレクションが作成されない

var mongoose = require('mongoose'); 

module.exports = function(config) { 
    mongoose.connect(config.db); 
    var db = mongoose.connection; 
    db.on('error', console.error.bind(console, 'connection error')); 
    db.once('open', function callback() { 
    console.log('db opened'); 
    }); 

    var userSchema = mongoose.Schema({ 
    firstName: String, 
    lastName: String, 
    userName: String 
    }); 

    var User = mongoose.model('User', userSchema); 

    User.find({}).exec(function(error, collection) { 
    if (collection.length === 0) { 
     User.create({firstName: Zo, lastName: Keane, userName: Zkeane}); 
     User.create({firstName: Pop, lastName: Mean, userName: Pop}); 
     User.create({firstName: Joe, lastName: Animal, userName: Joe}); 
    } 
    }); 
}; 
+0

あなたはコレクション名が正しいことを確認するために、データベースのすべてのコレクションを列挙しましたか? –

+0

私のmongoが適切に動作しているかどうかを確認するためにシェルで作成したコレクションが1つだけあります。私はwebstormで作業しているので、mongoエクスプローラで見ることができますが、この1つではありません。 – nakedFool

+0

[** 'create()' **](http://mongoosejs.com/docs/api.html#model_Model.create)メソッド非同期で、なぜあなたはそれを同期的に呼びますか? – chridam

答えて

0

は、マングースはあなたがexec()を呼び出すときに、私の知る限り唯一の解決の約束チェーンを、設定している前提としています。これらの作成手順のそれぞれにconsole.logコールバックを追加し、ユーザーのコレクションがないかどうかを確認してください。

User.find({}).exec(function(error, collection) { 
    if (collection.length === 0) { 
     User.create({firstName: Zo, lastName: Keane, userName: Zkeane}, console.log); 
     User.create({firstName: Pop, lastName: Mean, userName: Pop},console.log); 
     User.create({firstName: Joe, lastName: Animal, userName: Joe},console.log); 
    } 
    }); 
+0

Zoは定義されていません。 – nakedFool

+0

その部分のコードをコピーしました。スコープ内にこれらの変数を定義していないと、そのエラーが発生します。 – Paul

関連する問題