Я следую этой книге addyosmani - backbone-fundamentals для создания простого приложения backbone.js с сервером узлов и mongodb в качестве backend.Невозможно подключиться к mongoDB с помощью mongoose
В соответствии с поручением, я установил последние версии Node.js от nodejs.org и MongoDB из www.mongodb.org и бегал MongoDB по следовало instructions.
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);
});
Он регистрирует 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
В настоящее время БД прослушивает порт по умолчанию с базой данных «тест» по умолчанию.
Я пробовал use library_database
в оболочке mongo, но все равно получаю тот же ответ от узла сервера.
Нужно ли вручную создавать db для приложения ..? Если да, то как я могу создать экземпляр для приложения и подключиться к нему с узла сервера ..?
Или mongoose автоматически создает такой db в корневой папке приложений (вряд ли произойдет) ..?
Я довольно новичок в node.js
, mongodb
, mongoose
и т. Д. Поэтому мне могут быть недостающие основные понятия. Что мне не хватает ..?
номер порта требуется в некоторых версиях MongoDB как 3.0+ Он работал после того, как не добавляя порта нет. Хороший улов! – webblover