我正在按照本书addyosmani – backbone-fundamentals创建一个带有节点服务器和mongodb作为后端的简单backbone.js应用程序.
按照说明,我已经安装了nodejs.org的最新版本的Node.js和www.mongodb.org的mongodb,并按照instructions运行了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"
}
}
tutorial then suggests to将以下内容添加到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);
});
它记录运行..! (为什么我没有创建任何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”监听默认端口.
我尝试在mongo shell中使用library_database,但仍然从节点服务器获得相同的响应.
我是否需要为应用程序手动创建数据库..?如果是这样,我如何为应用程序创建一个实例并从节点服务器连接到它?
或者mongoose会在应用程序根文件夹中自动创建这样一个db(不太可能发生)..?
我对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');
现在我得到了回应!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。