gpt4 book ai didi

javascript - 无法使用 mongoose 连接到 mongoDB

转载 作者:IT老高 更新时间:2023-10-28 13:36:16 28 4
gpt4 key购买 nike

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

按照指示,我从 nodejs.org 安装了最新版本的 Node.js。和 mongodb 来自 www.mongodb.org并按照 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);
});

它记录 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 中使用 library_database,但仍然从 Node 服务器得到相同的响应。

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

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

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

最佳答案

我刚刚找到了 connect 的示例和 createConnection在文档中:

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

教程如下:

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

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

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

现在我收到了回复!

关于javascript - 无法使用 mongoose 连接到 mongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27212713/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com