对象#<MongoClient>没有方法“打开”

我一直在尝试使用Node.js,Express.js和MongoDB创build一个简单的站点。 我是新来的这些技术,一直有问题设置数据库这是我的index.js文件中的代码片段:

var http = require('http'), express = require('express'), path = require('path'), MongoClient = require('mongodb').MongoClient, Server = require('mongodb').Server, CollectionDriver = require('./collectionDriver').CollectionDriver; var app = express(); app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); var mongoHost = 'localHost'; var mongoPort = 27017; var collectionDriver; var mongoClient = new MongoClient(new Server(mongoHost, mongoPort)); mongoClient.open(function(err, mongoClient) { if (!mongoClient) { console.error("Error! Exiting... Must start MongoDB first"); process.exit(1); } var db = mongoClient.db("MyDatabase"); collectionDriver = new CollectionDriver(db); }); 

在我尝试在terminal中运行node index.js之后,它提示如下:

 js-bson: Failed to load c++ bson extension, using pure JS version /Users/username/dev/ga-final/index.js:31 mongoClient.open(function(err, mongoClient) { //C ^ TypeError: Object #<MongoClient> has no method 'open' at Object.<anonymous> (/Users/username/dev/ga-final/index.js:31:13) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:906:3 

哪里不对? 为什么我不能打开? 你能帮我解决这个问题吗? 谢谢!

这可能是因为你正在使用mongodb的新版本,它使用mongodb驱动程序版本1.4后工作正常。

 npm install mongodb@1.4.x 

看看mongodb文档 。 你的mongoClient对象不是你想象的那样,为什么没有open()方法可用。

让您的示例代码看起来更像他们的:

 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(); });