最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

无法使用 mongoose 连接到 mongoDB

网站源码admin52浏览0评论

无法使用 mongoose 连接到 mongoDB

无法使用 mongoose 连接到 mongoDB

我正在关注这本书 addyosmani - backbone-fundamentals 以创建一个简单的 backbone.js 应用程序,以节点服务器和 mongodb 作为后端。

按照说明,我已经安装了来自nodejs的最新版本的Node.js和来自www.mongodb的mongodb,并按照说明运行了mongodb。


package.json
如下:

    {
    "name": "backbone-library",
    "version": "0.0.1",
    "description": "A simple library application using Backbone",
    "dependencies": {
        "express": "~3.1.0",
        "path": "~0.4.9",
        "mongoose": "~3.5.5",
        "body-parser": "~1.9.1"
    }
}

教程然后建议将以下内容添加到

server.js
文件以连接到mongoDB:

//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 );

我对以下行感到困惑:

mongoose.connect( 'mongodb://localhost/library_database' );

因为这本书没有提到任何关于创建名为

library_database
的数据库的事情,而且我还没有手动创建 - 如果我在
server.js
中运行以下命令:

mongoose.createConnection( 'mongodb://localhost/library_database' );

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
// we wait till mongo is ready before letting the http handler query users:
db.once('open', function () {
    console.log('Running');
    //Schemas
    var Book = new mongoose.Schema({
        title: String,
        author: String,
        releaseDate: Date
    });

    //Models
    var BookModel = mongoose.model('Book', Book);
});

它记录

Running
..! (怎么会因为我没有创建任何
library_database
..?

但是,如果我进一步按照本书添加 GET 请求处理程序,如下所示:

    //Get a list of all books
app.get( '/api/books', function( request, response ) {
    return BookModel.find( function( err, books ) {
        if( !err ) {
            return response.send( books );
        } else {
            return console.log( err );
        }
    });
});

并点击以下请求:

jQuery.get( '/api/books/', function( data, textStatus, jqXHR ) {
  console.log( 'Get response:' );
  console.dir( data );
  console.log( textStatus );
  console.dir( jqXHR );
});

根据教程我应该看到日志,相反我得到以下错误:

GET http://localhost:4711/api/books/ net::ERR_EMPTY_RESPONSE

数据库当前正在使用默认数据库“test”监听默认端口。

我在 mongo shell 中尝试了

use library_database
,但仍然从节点服务器得到相同的响应。

我需要为应用程序手动创建数据库吗?如果是这样,我如何为应用程序创建一个实例并从节点服务器连接到它..?

或者猫鼬会自动在应用程序根文件夹中创建这样的数据库(不太可能发生)..?

我对

node.js
mongodb
mongoose
等很陌生,所以我可能会遗漏一些基本概念。我错过了什么..?

回答如下:

我刚刚在文档中找到了

connect
createConnection
的例子:

mongoose.connect('mongodb://user:pass@localhost:port/database');
//-----------------------------------------------^

教程中的如下:

mongoose.connect( 'mongodb://localhost/library_database' );

缺少端口号。我通过添加默认端口号来更改它,如下所示:

mongoose.createConnection('mongodb://localhost:27017/library_database');

现在我收到回复了!

发布评论

评论列表(0)

  1. 暂无评论