步骤
1、npm i -g koa-generator 下载脚手架
2、koa2 --version 查看版本
3、koa2 myapp 创建项目
4、npm install 下载依赖
5、npm start 或者 npm run dev 这个可以热更新 但是应该会需要npm 版本是6.0.1 麻烦
mongodb的下载可以看
项目也是和这个学习
mongodb 启动
在mongodb bin 启动cmd 执行mongod --dbpath D:\MongoDB\data\db
在http://localhost:27017/ 查看是否启动成功
mongo show dbs
项目中 流程顺序 先下载mongodb
新建db 文件夹 index.js 文件
const mongoose = require('mongoose')
module.exports = ()=>{
//得用127 不能用localhost
//这个地址是 IPv6 地址,对应于 localhost。然而,MongoDB 没有在 IPv6 地址上监听,而只在 IPv4 地址(即 127.0.0.1)上监听。
mongoose.connect('mongodb://127.0.0.1:27017/jianshu',{useUnifiedTopology:true,useNewUrlParser:true})
.then(()=>{
console.log('数据库连接成功');
}).catch(err=>{
console.error('数据库连接失败',err)
})
}
在app。js 中
const MongoConnect = require('./db')
//连接数据库
MongoConnect()
新建 models文件夹 index.js文件
const mongoose = require('mongoose')
//系统用户模型对象
const userSchema = new mongoose.Schema({
username:String,
pwd:String
})
//在外面调用这个user 在数据库中 执行这个userSchema 规则 创建集合 其实就是创建表 user应该就是表名字
const User = mongoose.model('user',userSchema)
module.exports = {
User
}
在路由文件中就可以引入 调用 例子user 在routes users.js 中
const router = require('koa-router')()
const models = require('../models')
const {useradd} = require('../controller/user')
router.prefix('/users')
//添加系统用户
// router.post('/add', useradd)
router.post('/add', async function (ctx, next) {
let { username = '', pwd = '' } = ctx.request.body
await models.User.create({ username, pwd }).then(rel => {
if (rel) {
ctx.body = {
code: 200,
msg: '添加成功',
data: rel
}
} else {
ctx.body = {
code: 300,
msg: '添加失败',
}
}
}).catch(err => {
ctx.body = {
code: 400,
msg: '添加出现异常',
}
console.log(err);
})
})
//修改系统用户
router.post('/update', async function (ctx, next) {
let params = ctx.request.body
await models.User.updateOne(
{_id:params._id},//条件
{
username:params.username,
pwd:params.pwd
}
).then(res=>{
ctx.body = {
code: 400,
msg: '修改成功',
data: res
}
}).catch(err=>{
ctx.body = {
code: 400,
msg: '添加出现异常',
}
console.log(err);
})
})
//删除系统用户
router.post('/del', async function (ctx, next) {
let {_id} = ctx.request.body
await models.User.findOneAndDelete(
{_id}
).then(res=>{
ctx.body = {
code: 400,
msg: '删除成功',
data: res
}
}).catch(err=>{
ctx.body = {
code: 400,
msg: '删除出现异常',
}
console.log(err);
})
})
//查询所有系统用户
router.get('/find', async function (ctx, next) {
await models.User.find().then(res=>{
ctx.body = {
code: 400,
msg: '查询成功',
data: res
}
}).catch(err=>{
ctx.body = {
code: 400,
msg: '查询出现异常',
}
console.log(err);
})
})
//查询系统用户
router.get('/find/:id', async function (ctx, next) {
await models.User.findOne({_id:ctx.params.id}).then(res=>{
ctx.body = {
code: 400,
msg: '查询成功',
data: res
}
}).catch(err=>{
ctx.body = {
code: 400,
msg: '查询出现异常',
}
console.log(err);
})
})
// router.get('/', function (ctx, next) {
// ctx.body = 'this is a users response!'
// })
// router.get('/bar', function (ctx, next) {
// ctx.body = 'this is a users/bar response'
// })
module.exports = router
原则上运行项目 就应该可以了 有可能会有跨域问题
const cors = require('koa2-cors') npm 下载这个中间件
在app。js 中
const cors = require('koa2-cors')
app.use(json())
app.use(logger())
app.use(require('koa-static')(__dirname + '/public'))
app.use(cors()) //解决前端跨域问题
进一步提取分离代码
新建controller 文件夹 user.js 文件 可以将路由文件中的 代码复制到这边
const models = require('../models')
//添加用户
const useradd = async (ctx) =>{
let { username = '', pwd = '' } = ctx.request.body
await models.User.create({ username, pwd }).then(rel => {
if (rel) {
ctx.body = {
code: 200,
msg: '添加成功',
data: rel
}
} else {
ctx.body = {
code: 300,
msg: '添加失败',
}
}
}).catch(err => {
ctx.body = {
code: 400,
msg: '添加出现异常',
}
console.log(err);
})
}
module.exports = useradd
之后在路由文件中 就可以导入 直接调用这个useradd
//添加系统用户
router.post('/add', useradd)