Mongoose connect方法在简单的Node Server上失败.快递,猫鼬,路径

Jef*_*wrs 1 mongoose mongodb node.js express

这是我第一次使用mongoose运行节点.我正在阅读这本骨干书中的一些教程,我在本章中使用express,mongoose创建一个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 );
Run Code Online (Sandbox Code Playgroud)

我一直在寻找堆栈溢出和其他网站试图解决问题,但我发现似乎没有任何东西允许我连接到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)
Run Code Online (Sandbox Code Playgroud)

这一变化似乎解决了这个问题:

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

在那之后表达工作,但mongodb无法连接:

Express server listening on port 4711 in development mode
[Error: failed to connect to [localhost:27017]]
Run Code Online (Sandbox Code Playgroud)

我尝试改为:

mongoose = require( 'mongoose' ).Mongoose;
Run Code Online (Sandbox Code Playgroud)

我也尝试在cli中运行mongod,在cli中有一些选项,但这似乎只是打开了帮助页面.我完全陷入困境......任何帮助都会非常感激.提前致谢.

Pet*_*ons 15

您需要实际成功运行mongod并监听连接.只需键入mongod没有选项,点击ENTER,然后让它运行.然后在另一个终端启动您的快递应用程序.请注意,这mongod是mongodb服务器守护程序,mongo而是命令行客户端,您可以在其中运行交互式REPL并发出数据库命令.