2015-03-06 5 views
0

Я очень хорошо разбираюсь в NodeJs и AngularJs. После создания значительного приложения я пришел к выводу, что Мангуст не для меня. Я хочу использовать чистый MongoDb.Как использовать NodeJs без Mongoose

Я проделал очень хорошую работу по рефакторингу кода сервера. Я вытащил все свои функции из своих маршрутов и в контроллеры. В настоящее время, однако, мои контроллеры используют Mongoose, и они подключены к Mongo через схему.

Текущий код:

var express = require('express'), 
    errMsg = require('../../../utilities/errorMsg'), 
    MyMongooseSchema = require('./models/myMongooseModel'); 

module.exports = { 
    all: function (req, res) { 
     MyMongooseSchema.find({}).exec(function (err, results) { 
      if (err) { 
       .... 
      }); 
     } 
     res.send(results); 
    }) 
} 

Опять же, я не хочу этого. Я хочу динамизм MongoDb. Я пробовал это безрезультатно.

db.js:

function MongoDbConnect(dbName){ 
    var db = 'mongodb://localhost/' + dbName; 
    MongoClient.connect(db, function (err, db) { 
     if(err){ 
      console.log('Error connecting to database') 
     } else { 
    return db;  } 
});} 
exports.MongoDbConnect = MongoDbConnect; 

контроллер: [который вызывается из соответствующего маршрутизатора]

var database = require('../../../config/db'); 

module.exports = { 
    all: function (req, res) { 
    var db = database.MongoDbConnect('myDbName'); 
    db.collection('MyCollectionName').find({}, function (err, results) { 
     if (err) { 
      return res.status(400).send({ 
       message: errMsg.getErrorMessage(err) 
      }); 
     } 
     res.send(results); 
    }) 
}} 

Очевидно, что это не работает.

Каким будет подходящий способ создания хорошо реорганизованного подключения к базе данных, к которому может обращаться любой контроллер, с любой базой данных, необходимой контроллеру?

спасибо.

ответ

1

Привет всем, спасибо за многое за вашу помощь!

var mongoskin = require('mongoskin'); 
    var db = mongoskin.db('mongodb://localhost:27017/myDatabase?auto_reconnect', {safe:true}); 
    db.collection('Menu').find({}).toArray(function(error, menu){ 
     if (error) return next(error); 
     res.send(menu || []) 
    }) 
Смежные вопросы