【问题标题】:Node.js Mongodb native-drive organisationNode.js Mongodb 原生驱动组织
【发布时间】:2013-09-12 00:55:01
【问题描述】:

如何在大项目中组织Mongodb native-driver?

目前我在每个“模型”中使用此代码,这基本上只是模块中的一个对象。

users.js

var mongo = require('mongodb');

var Users = {};

Users.db = new mongo.Db(...);

Users.db.open = function(e, c){
  if(e){ throw new Error(e); } else {
  console.log('connection opened'); }
};

Users.c = Users.db.collection('users');

Users.login = function(username, rawPassword, callback){
  Users.c.findOne({ username: username }, function(e, o){
    if(o.password === encrypt(rawPassword)){ callback(o); }
    else { callback(null); }
  });
};

但这是否是在每个分离的模型中打开数据库连接的最佳方式?如何正确共享模型之间的连接?这是一个很好的解决方案吗:

database-connections.js

var mongo = require('mongodb');
var RedisClient = require('redis-client');

module.exports = {
 main: new mongo.Db(...),
 log: new mongo.Db(...),
 cache: new RedisClient(...)
};

所以每次我们使用数据库连接时,我们都可以使用它:

users.js

var mainDb = require('database-connections.js').main;
var logDb = require('database-connections.js').log;
var cacheDb = require('database-connections.js').cache;

mainDb.open(function(e, c)){
  if(e){ throw new Error(e); } else {
    mainDb.collection('users', function(e, c){
      // do work.
    });
  }
});

【问题讨论】:

    标签: javascript node.js mongodb


    【解决方案1】:

    在我对您之前的@​​987654321@ 的回答中,我说 mongodb-native api 笨重且难以使用。我想我们可以在这里看到原因。

    使用 mongojs

    users.js

    var db = require("mongojs").connect('maindb', ['users']);
    
        db.users.find({}, 
    
        function(err, results){
    
        //do something with the results
    
        })
    

    我认为这很简单,并且对于大型应用程序会更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      相关资源
      最近更新 更多