【Vue全家桶+SSR+Koa2全栈开发】(四)mongoose基础

写在开头

大家好,这里是 lionLoveVue,基础知识决定了编程思维,学如逆水行舟,不进则退。金三银四,为了面试也还在慢慢积累知识,Github上面可以直接查看所有前端知识点梳理, github传送门,觉得不错,点个Star★,好运连连,Offer终究鼠于你,持续更新中。另外,也可以关注微信公众号: 小狮子前端Vue,源码以及资料今后都会放在里面。

mongoose基础


mongodb概念&安装

mongodb属于非关系型数据库,与mysql相对的(mysql是关系型数据库)

mongodb里面没有 table表,只有 Collections

原本mysql一行叫做 row,而在mongodb中叫做 document,原本一列叫做 cloumn,而现在叫做 fields

windows 10 安装教程:

推荐阅读:Windows 平台安装 MongoDB

注意

安装Install MongoDB Compass 不勾选,否则可能要很长时间都一直在执行安装,MongoDB Compass是一个图形界面管理工具,后面会去下载一个图形界面管理工具Robo3T

其它选项就默认选择 next 即可

找到下面位置下的两个 .exe 都点击运行一下好了… (启动服务应该是下面那一个)

检测是否安装成功

访问:http://127.0.0.1:27017/ 是否出现如下界面:

图形界面管理工具 Robo3T 安装与使用

官网地址

Studio windows下载地址

Robo 3T下载

进入安装页面后选择 easy 版本 ,然后选择你喜欢的主题风格,是明亮还是黑暗风格

进入图形化界面后,新建一个 connection,选择默认端口 27017,保存

mongoose 中文文档

参考:mongoose 4.5中文文档

在之前配置好的 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,
  }
})

更多知识点请参考:mongoose 4.5中文文档

结尾


如若本文有瑕疵需修改的地方,请提出来,谢谢您的贡献!

欢迎关注微信公众号:小狮子前端Vue

谢谢您的支持!✿✿ヽ(°▽°)ノ✿

学如逆水行舟,不进则退
发布了607 篇原创文章 · 获赞 2313 · 访问量 37万+

猜你喜欢

转载自blog.csdn.net/weixin_42429718/article/details/105504951