如何在没有Mongoose的情况下使用NodeJ

时间:2015-03-06 20:45:39

标签: mongodb

我非常擅长NodeJs和AngularJs。在建立了一个相当大的应用程序后,我得出结论,Mongoose不适合我。我想使用纯MongoDb。

我做了很好的重构我的服务器代码。我将所有功能从我的路线中拉出来并进入控制器。但是,目前我的控制器正在使用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 个答案:

答案 0 :(得分: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 || [])
    })