如何在另一个文件中使用MongoDB集合

时间:2013-03-20 05:32:27

标签: javascript node.js mongodb

我有一个server.js的服务器文件。

我在这个文件中有一个MongoDB连接,如下所示:

var Db=require('mongodb').Db;
var BSON=require('mongodb').BSONPure;
var Server=require('mongodb').Server;

client=new Db('database' , new Server('127.0.0.1',27017),{safe:false});

client.open(function(err,pClient)
{
    client.collection('userdetails',function(err,collection)
    {
        Ucollection=collection;
    });
});

我有另一个名为server2.js的文件。在此文件中,我必须检查Ucollection中是否存在用户名(这是集合名称)。

如何将MongoDB连接提供给server2.js?如何在server2.js中使用此集合?

4 个答案:

答案 0 :(得分:1)

你可以做这样的事情

server.js中的

var Db=require('mongodb').Db;
var BSON=require('mongodb').BSONPure;
var Server=require('mongodb').Server;

global.mongoHelper = {};
global.mongoHelper.db = Db;
global.mongoHelper.bson = BSON;
global.mongoHelper.server = Server;


client=new Db('database' , new Server('127.0.0.1',27017),{safe:false});

client.open(function(err,pClient)
{
    client.collection('userdetails',function(err,collection)
    {
        Ucollection=collection;
    });
});
server2.js中的

client=new global.mongoHelper.db('database' , new global.mongoHelper.server('127.0.0.1',27017),{safe:false});

client.open(function(err,pClient)
{
    client.collection('userdetails',function(err,collection)
    {
        Ucollection=collection;
    });
});

答案 1 :(得分:1)

我认为更清晰的方法是将数据库配置分成单独的文件。喜欢这个

数据库-config.js中的

var Db=require('mongodb').Db;
var BSON=require('mongodb').BSONPure;
var Server=require('mongodb').Server;

client=new Db('database' , new Server('127.0.0.1',27017),{safe:false});

module.exports.connectDatabase = function(callback){
   client.open(function(err,pClient)
   {
       if(err){
         console.log(err);
         process.exit(1);
       }

       module.exports.userCollection = pClient.collection('userdetails');
       callback();
   });
}
server.js中的

var  database = require('./database-config')
database.connectDatabase(function() {
   //here you can reuse collection like this
   database.userCollection

}
server2.js中的

var  database = require('./database-config')
//here you can reuse collection like this
   database.userCollection

我假设server.js是您实际启动服务器的主文件,因此当您运行应用程序时,它连接到数据库并加载您可以在应用程序中的任何位置使用的所需集合,就像我这样做被认为是最佳实践重复使用馆藏。如果有任何混淆,请告诉我

答案 2 :(得分:0)

嗯,你对模块化代码的整个概念有点误解。对于您的任务,您不应该制作第二个server.js。你可以在server.js文件中创建另一个模块,例如verifyUser并要求它。在你的mongodb连接之后你可能需要它(可能是)。

答案 3 :(得分:0)

server.js

var Db=require('mongodb').Db;
var BSON=require('mongodb').BSONPure;
var Server=require('mongodb').Server;

client=new Db('database' , new Server('127.0.0.1',27017),{safe:false});

client.open(function(err,pClient)
{

     exports.Ucollection=pClient;
  });
});

server2.js

  var mongodb = require('mongodb');
  var mainApp=require('./server');
  var collectionObj=mainApp.Ucollection;
  var collection = new mongodb.Collection(collectionObj, 'userdetails');

使用此collection.you可以查询如下

  collection.insert(userInfo,{safe:true},function(err, objects) {
    if(!err){
       console.log('Data inserted successfully.');
     }

  });