2016-07-25 4 views
0

У меня есть следующий код в файле: script.jsподключение к MongoDB вопрос

var express = require('express'), 
    app = express(), 
    cons = require('consolidate'), 
    MongoCl = require('mongodb').MongoClient, 
    Server = require('mongodb').Server; 
app.engine('html', cons.swig); 
app.set('view engine', 'html'); 
app.set('views', __dirname +'/views'); 

var mongoclient = new MongoCl(new Server('localhost', 27017, {'native_parser' : true})); 
var db = mongoclient.db('course'); 

app.get('/', function (req,res) { 
    db.collection('hello_mongo_express').findOne({}, function (err, doc) { 
     res.render('hello',doc); 
    }); 
}); 
app.get('*', function (req,res) { 
    res.send('Page not found',404); 
}); 

mongoclient.open(function (err, mongoclient) { 
    if(err) throw err; 
    var port = 8080; 
    app.listen(port); 
    console.log("Express server started on port "+port); 
}); 

./views/hello.html выглядит как:

<h1>Hello, {{name}}</h1> 

У меня есть действующий сбор в пределах db 'course'.

При попытке запуска с помощью узла, я сталкиваюсь следующий вопрос:

F:\mongo_proj>node script.js 
F:\mongo_proj\script.js:11 
var db = mongoclient.db('course'); 
        ^

TypeError: mongoclient.db is not a function 
    at Object.<anonymous> (F:\mongo_proj\script.js:11:22) 
    at Module._compile (module.js:409:26) 
    at Object.Module._extensions..js (module.js:416:10) 
    at Module.load (module.js:343:32) 
    at Function.Module._load (module.js:300:12) 
    at Function.Module.runMain (module.js:441:10) 
    at startup (node.js:139:18) 
    at node.js:968:3 

Несмотря на то, я думаю, весь код, который создает mongoclient, БД объектов, будет вызвана только тогда, когда подключение к БД было установлено. Так что может быть вопрос

редактировать: Я пытался @ предложение Джерри: output screenshot

ответ

0

Этот вопрос приходит потому, что вы пытаетесь использовать mongoclient, прежде чем он открывает соединение. Так обернуть код в открытой функции следующим образом:

var db; 
mongoclient.open(function (err, mongoclient) { 
    db = mongoclient.db('course'); 
    if(err) throw err; 
    var port = 8080; 
    app.listen(port); 
    console.log("Express server started on port "+port); 
}); 

Смотрите ссылку для дальнейшего использования mongo connection

Кроме того, этот метод .Open() используется в более ранних версиях. При использовании более новой версии используйте метод .connect(). Для более поздних версий могут ссылаться это node driver manual

+0

Если я переместить его, как что я получаю ошибка при открытом методе объекта монгольмента –

+0

такая же ошибка? Можете ли вы убедиться, что сервер mongo запущен? Также вы можете следить за входом в журнал при запуске своего сервера – jerry

+0

Я отредактировал этот вопрос с помощью вашего предложения o/p –

0

попробовать это .. это простой способ подключения

var MongoClient = require('mongodb').MongoClient 
    , assert = require('assert'); 

// Connection URL 
var url = 'mongodb://localhost:27017/myproject'; 
// Use connect method to connect to the Server 
MongoClient.connect(url, function(err, db) { 
    assert.equal(null, err); 
    console.log("Connected correctly to server"); 

    db.close(); 
}); 

сослаться на эту ссылку и попробуйте эту

https://www.npmjs.com/package/mongodb

Смежные вопросы