T J*_*T J 5 javascript mongoose mongodb node.js
我关注这本书的addyosmani-骨干基础知识,用于创建一个简单的node.js应用程序,其中以节点服务器和mongodb作为后端。
按照指示,我已经从nodejs.org安装了最新版本的Node.js,从www.mongodb.org安装了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
DB当前正在使用默认数据库“ test”监听默认端口。
我use library_database在mongo shell中尝试过,但仍然从节点服务器得到相同的响应。
我是否需要为应用程序手动创建数据库。如果是这样,我如何为该应用程序创建实例并从节点服务器连接到该实例。
还是猫鼬会在应用程序的根文件夹中自动创建这样的数据库(不太可能发生)。
我是很新的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');
现在我得到了回应!
| 归档时间: | 
 | 
| 查看次数: | 11246 次 | 
| 最近记录: |