2016-10-17 15 views
1

私はそれがここで細かい作業app.jsnode.jsのアプリケーション全体でdb接続にアクセスするには?

var express = require('express'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var mongo = require('mongodb'); 
var monk = require('monk'); 
var db = monk('localhost:27017/nodetest1'); 

app.use(function(req,res,next){ 
    req.db = db; 
    next(); 
}); 

monkでのMongoDBを接続してください。しかし今では、ルートフォルダにindex.jsを追加しました。

var monk = require('monk'); 
var db = monk('localhost:27017/nodetest1'); 

exports.index = function(req, res){ 
    var collection = db.get('usercollection'); 
    collection.find({},{},function(e,docs){ 
    res.render('userlist', { "userlist" : docs}); 
}); 
res.render('index', { title: 'Express' }) 
}; 

これも問題ありません。しかし、私はapp.jsとindex.jsの両方でDBを接続しています。私はその接続がapp.jsで定義行う必要があること はindex.jsでアクセス

答えて

2

私が知っている2解決策は以下のとおりです。

は、そのファイルを別のファイル内の接続、インポートを置きます。

db.js

var monk = require('monk'); 
module.exports = monk('localhost:27017/nodetest1'); 

その他のファイル:

var db = require('./db.js'); 

それとも周りの同じ接続パス:

app.js:

var monk = require('monk'); 
var db = monk('localhost:27017/nodetest1'); 
var module = require('./myModule.js')(db); 

myModule.jsを:

module.exports = (db) => { 
    //... 
}; 

または:

app.js:

var monk = require('monk'); 
var db = monk('localhost:27017/nodetest1'); 
var module = require('./myModule.js'); 
module.init(db); 

myModule.js:

var db; 

exports.init = (masterDb) => { 
    db = masterDb; 
}; 

そしてdbを確保することは、それを使用する前に設定されています。

0

database.jsのような別のファイルを作成し、その中にコードを置く:

module.exports = { 
    url : 'mongodb://localhost/productecom' 
}; 

を、どこにこのファイルが必要ですindex.jsのよう

:データベース接続を必要とする

var database = require('./database'); 
mongoose.connect(database.url); 

私の例では、MongoDBのと異なるURLを持ち、目を作ります。私はおよそmonkは多分あなたは全体の僧侶の構成をエクスポートする必要が知らないので、あなたの必要性につきとして電子チェンジ、それは動作します

0

だけのシンプルなdb.jsは、データベース接続でファイルを、あなたは次のようにそれを使用する必要がある時はいつでもあなたの接続が必要です作成:

db.js

var monk = require('monk'); 
module.exports = monk('localhost:27017/nodetest1'); 

app.js

... 
var db = require('./db.js'); 

app.use(function(req,res,next){ 
    req.db = db; 
    next(); 
}); 

インデックス。js

var db = require('./../db.js'); 

exports.index = function(req, res){ 
    var collection = db.get('usercollection'); 
    collection.find({},{},function(e,docs){ 
     res.render('userlist', { "userlist" : docs}); 
    }); 
    res.render('index', { title: 'Express' }) 
}; 

@DrakaSANと同じ考えを共有するクレジット。

関連する問題