无法连接我的nodejs应用程序与mLab数据库

我试图连接它与mlab数据库,但它不工作,经历了很多stackoverflow的答案,并尝试了一切,但错误仍然存​​在,请帮助。

var express = require('express'); var mongojs = require('mongojs'); var mongodb = require('mongodb'); // var db = mongojs('contactlist',['contactlist']); var uri = 'mongodb://user:pass@####.mlab.com:13702/contactlist' mongodb.MongoClient.connect(uri, { server: { auto_reconnect: true } }, function (err, contactlist) { }); var db = mongodb.connect(uri); var app = express(); var bodyParser = require('body-parser'); app.use(express.static(__dirname + "/public")); app.use(bodyParser.json()); app.get('/contactlist', function(req, res){ console.log("I received a GET request"); db.contactlist.find(function(err, docs){ console.log(docs); res.json(docs); }); }); app.post('/contactlist', function(req, res) { console.log(req.body); db.contactlist.insert(req.body,function(err,doc) { res.json(doc); }); }); app.listen(process.env.PORT ||3000, function(){ console.log("Express server listening on port %d in %s mode", this.address().port, app.settings.env); }); 

我尝试在浏览器上插入数据后,出现这些错误,甚至没有显示数据库中的数据。 错误:

 TypeError: Cannot read property 'find' of undefined at D:\contactlistapp\server.js:17:16 at Layer.handle [as handle_request] (D:\contactlistapp\node_modules\express\lib\router\layer.js:95:5) at next (D:\contactlistapp\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (D:\contactlistapp\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (D:\contactlistapp\node_modules\express\lib\router\layer.js:95:5) at D:\contactlistapp\node_modules\express\lib\router\index.js:281:22 at Function.process_params (D:\contactlistapp\node_modules\express\lib\router\index.js:335:12) at next (D:\contactlistapp\node_modules\express\lib\router\index.js:275:10) at jsonParser (D:\contactlistapp\node_modules\body-parser\lib\types\json.js:103:7) at Layer.handle [as handle_request] (D:\contactlistapp\node_modules\express\lib\router\layer.js:95:5) { name: 'kkm', email: 'kmk' } TypeError: Cannot read property 'insert' of undefined at D:\contactlistapp\server.js:27:16 at Layer.handle [as handle_request] (D:\contactlistapp\node_modules\express\lib\router\layer.js:95:5) at next 

在MongoShell中支持db.[collection_name]语法(即属性集合名称),但在节点环境中,必须使用以下语法: db.collection("collection_name").find() 。 与插入相同。

另外请注意,MongoClient的连接function是asynchronous的。 您必须从指定的callback中获得对数据库的引用。

 mongodb.MongoClient.connect(uri, { server: { auto_reconnect: true } }, function (err, contactlist) { db = contactlist; });