Mongoose连接方法在简单的节点服务器上失败。 快递,mongoose,path

这是我第一次用mongoose运行节点。 我正在关注这本骨干书中的一些教程,并且我正在使用express,mongoose创build一个restful api的这一章,我正在关注这个代码,我甚至来复制和粘贴,但是它仍然不起作用。 这里是代码:

http://addyosmani.github.io/backbone-fundamentals/#creating-the-back-end

// Module dependencies. var application_root = __dirname, express = require( 'express' ), //Web framework path = require( 'path' ), //Utilities for dealing with file paths mongoose = require( 'mongoose' ); //MongoDB integration //Create server var app = express(); // Configure server app.configure( function() { //parses request body and populates request.body app.use( express.bodyParser() ); //checks request.body for HTTP method overrides app.use( express.methodOverride() ); //perform route lookup based on url and HTTP method app.use( app.router ); //Where to serve static content app.use( express.static( path.join( application_root, 'site') ) ); //Show all errors in development app.use( express.errorHandler({ dumpExceptions: true, showStack: true })); }); //Start server var port = 4711; app.listen( port, function() { console.log( 'Express server listening on port %d in %s mode', port, app.settings.env ); }); // Routes app.get( '/api', function( request, response ) { response.send( 'Library API is running' ); }); //Connect to database mongoose.connect( 'mongodb://localhost/library_database'); //Schemas var Book = new mongoose.Schema({ title: String, author: String, releaseDate: Date }); //Models var BookModel = mongoose.model( 'Book', Book ); 

我一直在堆栈溢出和其他网站试图解决这个问题,但没有发现我似乎允许我连接到MongoDB。

第一个错误是:

 events.js:72 throw er; // Unhandled 'error' event ^ Error: failed to connect to [localhost:27017] at null.<anonymous> (/Users/jeff/Sites/backbone-ex2/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:536:74) at EventEmitter.emit (events.js:106:17) at null.<anonymous> (/Users/jeff/Sites/backbone-ex2/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15) at EventEmitter.emit (events.js:98:17) at Socket.<anonymous> (/Users/jeff/Sites/backbone-ex2/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:478:10) at Socket.EventEmitter.emit (events.js:95:17) at net.js:411:14 at process._tickCallback (node.js:415:13) 

这个改变似乎解决了这个问题:

  mongoose.connect( 'mongodb://localhost/library_database', function(err) { if (err) console.log(err); } ); 

之后,快递工程,但MongoDB无法连接:

 Express server listening on port 4711 in development mode [Error: failed to connect to [localhost:27017]] 

我试图改变这个:

 mongoose = require( 'mongoose' ).Mongoose; 

我也尝试在cli中运行mongod ,在cli中有一些选项变化,但似乎只是提供了帮助页面。 我完全卡住…任何帮助将不胜感激。 提前致谢。

您需要实际上成功地让mongod运行并监听连接。 只需键入mongod不带选项,按ENTER键,让它运行。 然后在一个单独的terminal启动您的快速应用程序 请注意, mongod是mongodb服务器守护程序,而mongo是命令行客户端,您可以在其中运行交互式REPL并发出数据库命令。

你需要安装数据库本身。 请参阅这里的MongoDB安装指南。