针对您的问题,我将详细讲解“node.js连接mongoose数据库方法详解”的完整攻略。
标题
1.什么是mongoose
Mongoose是一个Node.js的MongoDB对象模型工具,可以在异步环境下工作。同时也是Node.js和MongoDB数据交互的重要中间件之一,可以实现对象模型分析,为模型的属性添加验证规则等等。使用mongoose可以让我们更方便地操作MongoDB。
2.安装mongoose模块
首先,需要安装mongoose,我们使用npm命令,执行如下:
npm install mongoose
3.连接数据库
在Node.js中,使用mongoose连接MongoDB数据的模块方法如下所示:
const mongoose = require('mongoose');
// 连接数据库
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true });
// 连接成功
mongoose.connection.on('connected', function () {
console.log('Mongoose connection open to ' + 'mongodb://localhost/test');
});
// 连接失败
mongoose.connection.on('error',function (err) {
console.log('Mongoose connection error: ' + err);
});
上面代码中,我们使用connect方法连接本地MongoDB数据库,其中,'mongodb://localhost/test'为MongoDB的连接地址,'test'为数据库名称。同时,我们可以设置mongoose.connect的第二个参数,例如:
mongoose.connect('mongodb://username:password@localhost:port/databaseName',{autoIndex: false});
此外,我们可以通过mongoose.connection的事件回调函数来判断连接是否成功。如上代码所示,其中,mongoose.connection.on表示监听mongoose.connection触发的事件,其中,'connected'表示连接成功事件,'error'表示连接失败事件。当连接成功时,我们可以在终端中打印出'Mongoose connection open to mongodb://localhost/test。'
4.定义Schema
Schema是mongoose中用于定义数据结构的配置对象,就是MongoDB数据集合中的各个属性。示例如下:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const blogSchema = new Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
如上所示,我们可以使用mongoose.Schema对象来定义我们的数据结构,并且可以为Schema中的属性指定属性类型、数据类型、默认值等属性。
5.使用Schema创建Model
Schema中定义的数据结构并不具备数据库操作的能力,它只是一个配置对象,因此我们需要使用mongoose.model()方法来创建一个Model。Model就是通过Schema构造生成的实例,可以执行各种数据库操作,包括增删改查等。示例如下:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const blogSchema = new Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
const Blog = mongoose.model('blog', blogSchema);
// 新建一篇博客
const myBlog = new Blog({
title: 'My First Blog',
author: 'Jack',
body: 'This is my first blog.'
});
// 保存到数据库
myBlog.save(function (err) {
if (err) {
console.error(err);
return;
}
console.log('save success');
});
如上所示,我们可以使用mongoose.model()方法来创建一个Model,并为其指定名称和Schema模板对象。在使用mongoose.model()方法后,我们就可以通过Model的实例对象,对数据库进行增删改查等操作。如上代码所示,我们通过使用Blog的实例对象,创建了一个名称为myBlog的对象,并且该对象的元素值与Schema中的规则一一对应。最后使用myBlog.save()方法,将数据保存在数据库中。
示例1-连接120.79.241.167:27017端口的远程MongoDB数据库
在Node.js中,我们可以使用如下代码来连接120.79.241.167的MongoDB数据库:
const mongoose = require('mongoose');
// 连接数据库
mongoose.connect('mongodb://120.79.241.167:27017/test', {useNewUrlParser: true});
// 连接成功
mongoose.connection.on('connected', function () {
console.log('Mongoose connection open to ' + 'mongodb://120.79.241.167/test');
});
// 连接失败
mongoose.connection.on('error',function (err) {
console.log('Mongoose connection error: ' + err);
});
如上代码所示,我们可以通过在mongoose.connect中指定服务器的远程地址,来使用Node.js连接远程MongoDB数据库120.79.241.167上的test数据库。
示例2-使用Model查询数据库
在Node.js中,我们可以使用如下代码来使用Model查询数据库:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', {useNewUrlParser: true});
const Blog = mongoose.model('blog', new mongoose.Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
}));
// 查找所有博客
Blog.find(function (err, blogs) {
if (err) {
console.error(err);
return;
}
console.log(blogs);
console.log('find success');
});
如上代码所示,我们使用Blog.find()方法来查询数据库中所有的博客信息,并通过回调函数获得查询结果。在回调函数中,我们判断err是否为null,如果不为null则输出错误信息,否则输出查询结果。
这样,我们就成功实现了使用Node.js连接MongoDB数据库的操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js连接mongoose数据库方法详解 - Python技术站