需求
1. 数据库的作用:用来存放网站数据
2. 独立安装数据库
3. 实现数据库的增删改查命令的使用
4. 通过node实现数据库的增删改查
实际应用
- 安装Mongoose模块
- 实现增删改查
================================================================
在data文件夹中操作mongodb数据库,实现CURD(增删改查)
- create 增
- update 改
- read 读
- delete 删
a、在文件夹中,安装mongose模块
- 初始化目录:npm init -y
- 安装mongoose模块 ----> 安装好之后在package.json中可以看到有mongoose5.10.2:npm install mongoose
b、增删改查的实现
统一的
1)导入模块
- const 模块名 = require('模块名');
2)连接数据库,将数据库的端口号和库名赋值给一个变量
- const db变量 = 模名.createConnection('mongodb://127.0.0.1:27017/库名', {useNewUrlParser: true, useUnifiedTopology: true})
3)判断打开成功是数据库连接成功,判断打开失败是连接错误
- db变量.on("open打开成功",function(){console.log打印结果("数据库连接成功")})
- db变量.on("error打开失败",function(err){console.log("连接出错"+err)})
4)设置数据模型,声明那个是集合,限制字段和字段类型
- const model = db.model('user数据库中的表名',{ // 没写s 会自动加s
- name:{type:String, default:"username"}, //name名字是文字所以是字符串
- age:{type: Number}, // age年龄是数字所以是number
- sex:{type:String} //name性别是文字所以是字符串
- })
不同的
1)增
const insertObj增 = new model新的模块({
name: "小甜甜",
age: "22",
sex:"女"
})
// 方法1:insertObj增.save保存((err) => db.close关闭())
// 方法2(推荐)
insertObj.save()
.then宗旨(res=>{
console.log(res) // 插入成功,返回插入的数据对象
return res
})
.catch捕获(err => { // 当插入的数据类型 和 原先的声明有误 就走catch
console.log('插入失败' + err)
return false
})
2)改
// 注:update和updateOne是一样的 但是update已经out了
// 方法1:model.update/updateOne/updateMany(条件对象, 数据对象, (err) => db.close())
// 方法2(推荐)
model.updateOne只改一条({age:333}, {$set: {sex: '女'}})
.then(res => {
// 修改有一个特效
// 将sex改变女 第一次刷新ok
// 但是第二次同样的代码刷新 就不行
// 因为检测到数据一样 没有修改
console.log(res) // 返回一个对象 告诉你 修改成功了几条
return res.nModified // 返回受影响的行数
})
.catch(err => {
console.log('修改失败' + err)
return false
})
3)查
// 方法1:model.find/findOne(条件对象, 要显示的字段数据对象, (err, result) => db.close())
// 方法2(推荐)
// model.findOne({name:"千锋刘德华6666"})
model.find({name:"千锋刘德华"})
.then(res => {
console.log(res)
return res
})
.catch(err => {
console.log(err)
return false
})
4)删
// 方法1:model.remove/deleteOne/deleteMany(条件对象, (err) => db.close())
// 方法2(推荐)
// 命令执行成功 影响的行数
// model.deleteOne({name:"千锋刘德华"})
model.deleteMany({name:"张三"})
.then(res => {
console.log(res.deletedCount) // 打印受影响的行数
return res.deletedCount
})
.catch(err => { // 当传递的条件数据类型和模型声明的不一样
console.log('删除失败' + err)
return false
})