2017-09-07 1 views
1

私はMEAN技術の遅れて作業を始めました。Node.js - 含まれているパッケージのDBにアクセスしていないMongoose

私はモジュールmyModuleを持っています。それはルート、サービス、データベースにアクセスするモデルを持っています。

私は別のプロジェクトmyAnotherModuleを別のディレクトリに作成し、 "npm link"をmyModuleに作成しました。 myAnotherModuleでMongooseを使用しようとすると、適切な資格情報でDBにアクセスできません。それはmongoose.connection.dbdbを見つけることができません

var db = mongoose.connection.db; 
var mongoDriver = mongoose.mongo; 
var gfs = new grid(db, mongoDriver); 

myAnotherModuleに次のコードでは

は、未定義です。 これらの行をmyModuleで使用すると、コードは正常に動作します。

なぜmyAnotherModuleはmongoose.connection.dbを見つけることができませんか? npmリンクはどのように機能しますか?

答えて

1

は次のように接続してみ:

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/test'); 
var db = mongoose.connection; 
db.on('error', console.error.bind(console, 'connection error:')); 
db.once('open', function callback() { 
    console.log("h"); 
}); 

exports.test = function(req,res) { 
    res.render('test'); 
}; 
+0

myAnotherModuleで新しい接続を確立しません。私はすでにmyModuleに接続を確立しています。 mongooseがmyAnotherModuleで共有されないのはなぜですか?私は行方不明の何か他のことをする必要がありますか? – user3782548

0

私も最近、この問題が発生したために起こりました。通常、人々はdb configを分離するため、この問題が発生します。 mongodbがすでに接続されていることを確実にする適切なブロックで宣言してください。

db.once('open', function callback() { 
     var gfs = new grid(mongoose.connection.db, mongoDriver); 
    }); 
+0

私は私の問題を明確にしていないと思う。私はもう一度やります。 – user3782548

+0

私は私の問題を明確にしていないと思う。私はもう一度やります。私はメインモジュールを持っています。メインモジュールにはルータ、サービス、モデルがあります。それはマングース接続が確立されています。別のパッケージmoduleBを追加しました。 ModuleBにはルータ、サービス、モデルもあります。私はメインモジュールに "npm link"モジュールBを持っています。モジュールBでは、私はこの問題に直面しており、マングース関連の情報にアクセスすることはできません。私はmoduleBで提案したことを試しましたが、それと同じ問題です。 npmをリンクすると、メインモジュールのmoduleBではありませんか?なぜそれはマングースオブジェクトをgettinngしていないのですか? – user3782548

関連する問題