shell
来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作Mongoose
就是一个让我们可以通过Node来操作MongoDB的模块(ODM)
库,它对Node原生的MongoDB模块进行了进一步的优化封装, 并提供了更多的共嗯那个(Schema)
- 约束Collection
mongoose
包
npm install mongoose
const mongoose = require("mongoose");
mongoose.connect("mongodb://地址")
mongodb://127.0.0.1/test
mongoose.disconnect()
**注意**: 如果端口号是默认端口号(27017) 则可以省略不写
connection
Connection
对象就可以通过mongoose
模块的connection
属性来访问connection
对象是对数据库连接的抽象
, 它提供了对象连接、底层的Db
对象和表示结合的Model对象的访问connection
对象上的事件进行监听, 来获悉数据库连接的开始与断开open
和close
事件来监控连接的打开和关闭以上都是官方的废话, 简单来说⬇:
数据库连接成功的事件
mongoose.connection.once("open",function(){});
数据库连接断开的事件(一般不需要调用)
mongoose.connection.once("close",function(){});
// 01- helloMongose.js // 引入mongoose模块 const mongoose = require("mongoose"); // 连接数据库 mongoose.connect("mongodb://localhost:27017/test"); // 测试是否连接成功 mongoose.connection.once("open", function () { // 连接成功执行 console.log('连接成功~'); });
执行后可以看到已经成功连接上数据库了
但是注意: 在上面截图中我们可以看到有一行错误提示:
翻译过来意思为
mongoose.connect("mongodb://localhost:27017/test",{useNewUrlParser: true ,useUnifiedTopology: true});
Mongoose
你必须经常定义模式String
Number
Boolean
Array
Buffer
Date
ObjectId
或Oid
Mixed
mongoose
的Schema
属性来创建, 这个属性是一个构造函数
new Schema(definition,option)
definition
:描述模式options
: 配置对象, 定义数据库中集合的交互autoIndex
true
bufferCommands
capped
collection
Schema
的集合名称id
_id
的id处理器, 默认true
_id
id
字段,默认true
strict
Schema
的对象不会被插入进数据库,默认true
代码⬇:
const mongoose = require("mongoose"); // 连接数据库 mongoose.connect("mongodb://localhost:27017/test",{useNewUrlParser: true ,useUnifiedTopology: true}); // 测试是否连接成功 mongoose.connection.once("open", function () { // 连接成功执行 console.log('连接成功~'); }); // 创建Schema对象, 赋值给一个变量 const Schema = mongoose.Schema; // 创建Schema(模式)对象 const stuSchema = new Schema({ name: String, age: Number, gender: { type:String, default:'男' }, address:String });
这个时候还不能将数据插入到数据库中, 还需要定义 Model
模型对象
mongoose
的model()
方法,语法如下:
model(name.[schema],[collection],[skipInit])
name:
相当于模型的名字, 以后可以通过name
找到模型schema
: 创建好要应用的模型对象collection
: 是要连接的集合名skipInit
: 是否跳过初始化, 默认是false
Schema
对象编译成一个Model
对象, 你就完全准备好开始在模型中访问、添加、删除、更新和删除文档了。 也就是说有了模型以后我们就可以操作数据库了// 引入mongoose模块 const mongoose = require("mongoose"); // 连接数据库 mongoose.connect("mongodb://localhost:27017/test",{useNewUrlParser: true ,useUnifiedTopology: true}); // 测试是否连接成功 mongoose.connection.once("open", function () { // 连接成功执行 console.log('连接成功~'); }); // 创建Schema对象, 赋值给一个变量 const Schema = mongoose.Schema; // 创建Schema(模式)对象 const stuSchema = new Schema({ name: String, age: Number, gender: { type:String, default:'男' }, address:String }); // 通过Scheme来创建Model // Model代表的是数据库中的集合, 通过Model才能对数据库进行操作 // mongoose.model(modelName,schema); // modelName: 就是要映射的集合名称, mongoose会自动将集合名变成复数 // schema: 创建的Schema对象 const stuModel = mongoose.model('student', stuSchema); // 向数据库中插入一个文档 // stuModel.create(doc,function(err){}) stuModel.create({ name: '小明', age: 18, gender: '男', address:'上海' }, function (err) { if (!err) { console.log('插入成功'); } })
运行结果:
点开数据库后可以发现数据已经插入成功了