2016-04-08 11 views
0

Soru mimariyle ilgilidir.
Mongodb ile bağlantı kuran ve şemaları, modelleri vb. Olan bir sınıfa sahip olan 'db' modülüne sahibim.
ben sadece her rota dosyasında ('db') gerektiren ya da sadece birinde bu yapmalıyım:Node js, her yerde gereksinim duyduğunuzda veya req için bir özellik ekleyin

server.on('request', function(req) { 
    req.db = db; 
}); 

db.js: Ben farklı görüşler bulacaksınız düşünüyorum

"use strict"; 
var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/test'); 
var conn = mongoose.connection; 
conn.on('error', console.error.bind(console, 'connection error:')); 
conn.once('open', function() { 
    console.log("Connected to MongoDB."); 
}); 

class db { 
    constructor() { 
    //Users 
    this._usersSchema = mongoose.Schema(
     { 
     username: String, 
     password: String, 
     email: String 
     }); 
    this.Users = mongoose.model("Users", this._usersSchema); 
    } 
} 

module.exports = new db(); 
+0

Db modülünüze bağlıdır. Modül, gereksinim duyduğunuz her seferinde aynı örneği yeniden kullanırsa, yalnızca bunu başlatmanız gerekir. Eğer değilse, bunu geçebilirsiniz. Yine de daha fazla bilgi vermelisin. –

+0

Modül – Angels

+0

hakkında bazı bilgiler ekledim Moğol ile db bağlantısı boyunca geçmek zorunda değilsiniz. Sadece veritabanıyla etkileşim kurmak için şema modellerinizi kullanın. Modül gerisini halleder. –

cevap

3

ama İhtiyacım olan her yerde require'u tercih et. Düğüm içinde modules tekildir, bu nedenle her zaman aynı örneği alırsınız. Denetleyici mantığımı kendi dosyalarına ve rotalardan uzak tutmayı seviyorum. Ayrıca mantık, tüm istek ve yanıt nesnelerini beklemez. Bunun sebebi, daha sonra bir API son noktasına hizmet vermek için gerekli verileri almak veya sahte bir bütün istek ve yanıt nesnesine sahip olmadan sunucu tarafı görünümüne geçmek için aynı kodu kullanabilir.