使用到
koa2
+mongoose
文章目录
一、服务器文件目录结构
二、index.js搭建服务器
与
mysql
不同,mongoose
需要在搭建服务器时就连接数据库
以下为最简易的服务器创建单文件index.js实现服务器功能
1、工程化搭建koa服务器
index.js
引入koa
const Koa = require('koa') // 引入koa类,注意要大写(是个类class)
const app = new Koa() // 实例化Koa
const bodyParser = require('koa-bodyparser') // 引入post请求解析
app.use(bodyParser())
app.listen(9000)
console.log('app start at port 9000...')
- 配置路由
import routers from './routers'
routers(app)
index.js
完整代码
三、router文件夹
1、index.js配置路由根路径
index.js
用于配置根路径
例如:127.0.0.0/user/getUserById
127.0.0.0/user/getUser
127.0.0.0/user/postUser
127.0.0.0/user/delectUser
都属于 user/…
还会有其他
goods/…
store/…
注意:路由配置根路径暴露出去的是一个方法
配置内部的子路由引入到这个方法里
(app) =>{
router.use()
app.use( router,routes() ) // koa实例使用路由中间件
}
注意:
- 配置路由根路径要引入
koa路由
,配置具体路由路径同样也要引入koa路由
router.use()
后面接一个路由方法,而不是对象。下面是test具体路由的文件,注意暴露的内容
2、xxx.js配置路由具体路径
可以看到暴露的直接是
router实例对象
,在上面index.js
引用这个具体路由就是使用router实例
的routes()方法
这里先测试路由路径是配置成功,试一下test的'/'
路径
const Router = require('koa-router')
const router = Router()
// router模块定义接口方法,路径在主路径下续写
router.get('/', (ctx, next) => {
const result = { // 创建响应返回的数据结构
code: 200,
ts: '测试路径'
}
ctx.response.body = result // 直接把响应写进页面
})
export default router
- 测试,此时启动服务器
node index
命令行会输出
app start at port 9000...
打开浏览器,输入localhost:9000/test
,可以看到json内容,则路径配置成功
具体路由路径可以i配置成功,就可以开始连接数据库了。
import test from '../controllers/testControllers' // 数据库操作(自己创建的类class)
router.get('/getTest', test.getTest) // 访问路径是localhost:9000/test/getTest
router.post('/postTest', test.createTest) // 注意这些路径不要写成 router.post('/test/postTest', test.createTest)
路径写错会出现这种情况
这代表着路径无效。
四、数据库
- 引入数据库(连接数据库)
- 引入数据库(设置数据库表格)
- 创建类
- 设置类的方法(操作数据库)
1、controllers引入数据库(连接数据库)
这里可以称作
控制层
引入数据库连接的文件, 暴露的是数据库的model
也就是引入model
必定会执行一次连接数据库
import testModel from '../mongoose/dbConnect' // 引入控制数据库的方法
2、model连接数据库
连接数据库,不暴露出去,则引用这个文件的地方都会执行一次连接数据库
import mongoose from 'mongoose'
// 连接数据库
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true })
const db = mongoose.connection
// 错误处理
db.on('error', console.error.bind(console, 'connection error:'))
db.once('open', function () {
console.log('db success')
})
- 完整代码:
3、创建数据库(设置数据库表格)
import mongoose from 'mongoose'
const TestSchema = mongoose.Schema({
// 设置表格表头
content: String // 文本
})
// 创建/连接数据库表格
const TestModel = mongoose.model('test', TestSchema)
module.exports = TestModel
4、controller创建类
class TestController {
constructor () {
}
// 类方法,操作数据库
...
}
5、设置类的方法(操作数据库)
get对应查找数据库,用到
koa
的ctx.body
写入返回内容
用浏览器打开这个路由路径,就能执行这个查找数据库并返回数据
localhost:9000/test/getTest
重点:接口接收参数
- get
const {bookId} = ctx.params
- post
const {openid} = ctx.request.body
- get
async getTest (ctx) {
try {
let data = await TestModel.find()
ctx.body = {
code: 0,
data: data
}
} catch (err) {
ctx.throw(err)
}
}
- post
async createTest (ctx, next) {
const {text} = ctx.request.body
try {
if (text) {
// 创建文章
const data = await TestModel.create({
content: text
})
if (data) {
ctx.body = {
code: 0,
data: data
}
}
} else {
ctx.body = {
code: 1,
data: '没有传入text'
}
}
} catch (err) {
ctx.throw(err)
}
}
这里注意post不要在浏览器测试,
localhost:9000/test/post/Test
在浏览器是NOT FOUND
我他妈怕是个脑残吧,post的请求在浏览器不能直接打开啊。只能用postman
或者前端请求
啊
五、结论
上面搭建服务器的过程已经是一边编写一边测试了
根路由测试了,具体的子路由也测试了
在浏览器可以直接测试get请求
post请求要到postman上进行测试,并且跑通了
接下来就是前端能正常请求到接口,并根据需求完成接口逻辑
项目参考:慕课网
万事不顺,查文档
mpvue五分钟教程
vue官方文档
如有建议和疑问可联系
QQ:1017386624
邮箱:1017386624@qq.com