连接到mongodb问题

时间:2016-07-25 11:31:41

标签: node.js mongodb

我在script.js文件中有以下代码:

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&#39;课程中有一个有效的集合。

当我尝试使用node运行时,我遇到以下问题:

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,db对象的所有代码。那么问题是什么

编辑: 我试过@jerry的建议: output screenshot

2 个答案:

答案 0 :(得分:0)

此问题即将发生,因为您尝试在打开连接之前使用mongoclient。所以将代码包装在open函数中如下:

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

答案 1 :(得分: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