写在开头
大家好,这里是 lionLoveVue,基础知识决定了编程思维,学如逆水行舟,不进则退。金三银四,为了面试也还在慢慢积累知识,Github上面可以直接查看所有前端知识点梳理, github传送门,觉得不错,点个Star★,好运连连,Offer终究鼠于你,持续更新中。另外,也可以关注微信公众号: 小狮子前端Vue,源码以及资料今后都会放在里面。
mongoose基础
mongodb概念&安装
mongodb属于非关系型
数据库,与mysql
相对的(mysql是关系型数据库)
mongodb里面没有 table
表,只有 Collections
原本mysql一行叫做 row
,而在mongodb中叫做 document
,原本一列叫做 cloumn
,而现在叫做 fields
windows 10 安装教程:
注意
安装Install MongoDB Compass
不勾选,否则可能要很长时间都一直在执行安装,MongoDB Compass是一个图形界面管理工具,后面会去下载一个图形界面管理工具Robo3T
。
其它选项就默认选择 next
即可
找到下面位置下的两个 .exe
都点击运行一下好了… (启动服务应该是下面那一个)
检测是否安装成功
访问:http://127.0.0.1:27017/ 是否出现如下界面:
图形界面管理工具 Robo3T
安装与使用
进入安装页面后选择 easy
版本 ,然后选择你喜欢的主题风格,是明亮还是黑暗风格
进入图形化界面后,新建一个 connection
,选择默认端口 27017
,保存
mongoose 中文文档
在之前配置好的 Koa2 文件夹内(我的是koa2_learn文件夹) 打开 bash
界面,输入如下命令,安装 mongoose
npm i mongoose
连接数据库
接下来就是配置相关了
在项目根目录下创建 名为 dbs
的文件夹
新建一个 config.js
文件,配置如下代码
module.exports = {
dbs: 'mongodb://127.0.0.1:27017/dbs'
}
在 dbs
目录下创建 名为 models
的文件夹
新建一个 person.js
文件,配置如下代码(此时的文件名对应着之后我们的“表名”,也就是 Collections
)
const mongoose = require('mongoose')
//创建模式
let personSchema = new mongoose.Schema({
name: String,
age: Number
})
//创建模型
module.exports = mongoose.model('Person',personSchema)
然后在 app.js
中进行导入
const mongoose = require('mongoose')
const dbConfig = require('./dbs/config')
在 app.js
默认注释 routes
后面,添加第三行连接代码
// routes
app.use(index.routes(), index.allowedMethods())
app.use(users.routes(), users.allowedMethods())
mongoose.connect(dbConfig.dbs,{
useNewUrlParser:true
})
基本配置就结束了,现在最好是重启一下koa服务,ctrl+c
退出,然后输入如下命令:
npm run dev
出现如下界面,说明配置是没有问题的,连接成功!
接下来就是尝试写一个api试试,在 users.js
文件内配置如下代码
头部导入模型
//导入模型
const Person = require('../dbs/models/person')
自定义api接口
router.post('/addPerson',async function(ctx){
//新建一个模型的实例
const person = new Person({
name: ctx.request.body.name,
age: ctx.request.body.age
})
let code
try {
await person.save()
code=0
} catch (error) {
code=-1
}
ctx.body={
code
}
})
调用接口。 curl
是一个shell 命令, -d
命令表示是 post
请求 ,接下来是数据项,最后是api接口地址
curl -d 'name=chocolate&age=20' http://localhost:3000/users/addPerson
此时,打开Robo 3T,刷新一下我们的数据库,就能发现多了一个 dbs
查看一下,是否有对应写入数据:
上述过程,基本上把我们的后端服务和数据库进行了打通,后续我们只需要套着之前的例子来就好了,接下来再展示写一个api,因为上文是增加操作,也就是写操作,下文我们再来个读操作吧。
依旧是在 users.js
中加入如下代码
//数据库读取api
router.post('/getPerson',async function(ctx){
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
}
})
打开 bash
,执行如下命令:
curl -d 'name=chocolate' http://localhost:3000/users/getPerson
发现,会返回给我们json数据包,证明api接口实现
最后,附上更新和删除api,亲测有效嗷
//更新api
router.post('/updatePerson',async function(ctx){
const result = await Person.where({
name:ctx.request.body.name
}).update({
age: ctx.request.body.age
})
ctx.body = {
code: 0,
}
})
//删除api
router.post('/removePerson',async function(ctx){
const result = await Person.where({
name:ctx.request.body.name
}).remove()
ctx.body = {
code: 0,
}
})
结尾
如若本文有瑕疵需修改的地方,请提出来,谢谢您的贡献!
欢迎关注微信公众号:小狮子前端Vue
谢谢您的支持!✿✿ヽ(°▽°)ノ✿
学如逆水行舟,不进则退