安装mongdb
检查mongdb指令:which mongod
启动mongdb服务:mongod
mongoose中文文档
https://mongoose.shujuwajue.com/
在demo中安装mongoose:npm i mongoose --save
demo路径
在dbs文件夹的config.js下配置连接mongdb的数据库地址
基本语法:对象中,字段dbs为连接数据库的地址:dbs:数据库地址
module.exports = {
dbs:'mongodb://127.0.0.1:27017/dbs'//连接本地数据库
}
在dbs的modules文件夹下的person.js中配置mongdb的数据格式,创建一个表的模型
基本语法一(创建一个表数据格式的实列):new mongoose.Schema({字段名:字段类型,字段名:字段类型})
基本语法二(创建一个表的model):mongoose.model(表名称,数据格式实列)
const mongoose = require('mongoose')
let personSchema = new mongoose.Schema({//设计一个personSchema的数据格式
name:String,
age:Number
})
module.exports = mongoose.model('Person',personSchema)//创建一个mongoose的Person模型表
在app.js中引入数据库处理和配置并且连接数据库
基本语法(连接数据库):mongoose.connect(要连接的数据库地址,{userNewUrlParser:true})//里面的对象用于配置数据库
//引入数据库处理和配置
const mongoose = require('mongoose')
const dbConfig = require('./dbs/config')
//连接数据库
mongoose.connect(dbConfig.dbs,{
userNewUrlParser:true
})
在routers文件夹下的users.js中对数据库进行操作(增、删、改、查)
1、引入创建表的实列 实现mongoose的增删改查
//引入创建表的实列 实现mongoose的增删改查
const Person = require('../dbs/modules/person')
//路由添加前缀 localhost:8080/users/
router.prefix('/users')
2、增,将数据写入数据库
基本语法(增):new 表名称({字段名:数据一,字段名:数据二})
基本语法(保存):数据库名称.save()
//将数据写入数据库
router.post('/addPerson',async (ctx)=>{//通过在控制台输入指令:curl -d 'name=faker&age=20' http://localhost:8080/users/addPerson
const person = new Person({//给表填入对应的数据
name:ctx.request.body.name,
age:ctx.request.body.age
})
let code
try {
await person.save()//存储数据
code = 0
}catch (e) {
code = -1
}
ctx.body={code}
})
3、查,读取数据库中的内容
基本语法1(查找一条返回最先找到的一条):数据表名称(表对象).findOne({字段名称:字段对应的数据,字段名称2:字段对应的数据2}) //findOne里面的对象为 想要查询的数据条件;
基本语法2(查找到所有符合条件的):数据表名称 (表对象).find({条件})
//读取数据库中的内容
router.post('/getPerson',async (ctx)=>{//$ curl -d 'name=faker' http://localhost:8080/users/getPerson
const result = await Person.findOne({name:ctx.request.body.name})//找到数据据中的一个数据
const results = await Person.find({name:ctx.request.body.name})//找到数据库中复合条件的所有数据
ctx.body = {
code:0,
result,
results
}
})
4、改,更新数据
基本语法:表名称(表对象).where({
字段名称1:字段对应的数据1,
字段名称2:字段对应的数据2
}).update({
字段名称:字段更新的内容
})
简单说:表名称.where({更新的条件}).uodate({更新的内容})
//更新数据
router.post('/updatePerson',async (ctx)=>{// curl -d 'name=marin&age=312' http://localhost:8080/users/updatePerson
const result = await Person.where({//根据where中的条件,去改变那对应的数据
name:ctx.request.body.name
}).update({
age:ctx.request.body.age
})
ctx.body={
code:0
}
})
5、删,删除数据
基本语法:表名称.where({删除数据的条件}).remove()
//删除数据
router.post('/removePerson',async (ctx)=>{
const result = await Person.where({
name:ctx.request.body.name,
age:ctx.request.body.age
}).remove()
ctx.body={
code:0
}
})