Koa搭建
const Koa = require('koa');
const Router = require('koa-router')
const userRouter = require('./routers/users.js')
const userRoles = require('./routers/roles.js')
const mongoose =require('mongoose')
const koaBody = require("koa-body")
mongoose.connect(
"mongodb://localhost:27017/?readPreference=primary&appname=MongoDB%20Compass&directConnection=true&ssl=false"
);
var db = mongoose.connection;
db.on("error", console.error.bind(console, "链接失败!!!"));
db.once("open", function () {
console.log("链接成功!!!");
});
const app = new Koa();
const router = new Router();
router.get('/', async ctx => {
ctx.body = '你好! '
})
router.use(koaBody())
router.use(userRouter)
router.use(userRoles)
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000, () => {
console.log('你好,我正在监听3000的端口号')
})
参数
const Router = require("koa-router");
const router = new Router({ prefix: "/users" });
const {
getUserList,
getUser,
createUser,
updateUser,
deleteUser,
login
}=require('../controllers/usersControllers')
const {auth,hasLimit}=require('../middleware/usersMiddleware')
router.get('/',getUserList)
router.get('/:id',auth,getUser)
router.post('/reg',createUser)
router.put('/:id',auth,updateUser)
router.delete('/:id',auth,hasLimit,deleteUser)
router.post('/login',login)
module.exports = router.routes();
格式
const mongoose = require('mongoose');
const {Schema,model}=mongoose;
const usersSchema=new Schema({
name:{type:String,require:true},
password:{type:String,require:true},
rolesId:[{
type:Schema.Types.ObjectId,
ref:"Roles"
}],
date:{type:Date,default:Date.now}
})
module.exports=model("Userss",usersSchema)
类型
const Users = require('../models/usersSchema.js')
const jwt = require('jsonwebtoken');
const { secretKey } = require('../utils/Keys')
const getUserList = async ctx => {
ctx.body = await Users.find();
}
const getUser = async ctx => {
const user = await Users.findById(ctx.params.id);
if (!user) {
ctx.throw(404, '用户不存在')
}
ctx.body = user
}
const createUser = async ctx => {
console.log(ctx.request.body);
let { name } = ctx.request.body;
console.log(name);
const user = await Users.findOne({ name }).populate('rolesId');
if (user) {
ctx.throw(405, '已存在该用户!!!')
} else {
ctx.body = await new Users(ctx.request.body).save();
}
}
const updateUser = async ctx => {
let { id } = ctx.params
const user = await Users.findByIdAndUpdate(id, ctx.request.body);
if (!user) { ctx.throw(404, '用户不存在!!!') }
ctx.status = 200
ctx.body = { msg: '修改成功' }
}
const deleteUser = async ctx => {
try {
const user = await Users.findByIdAndDelete({ _id: ctx.params.id })
ctx.body = user
} catch (error) {
ctx.throw(404, '用户不存在!!!');
}
}
const login = async ctx => {
const user = await Users.findOne(ctx.request.body).populate('rolesId');
if (!user) { ctx.throw(401, '用户名或者密码输入错误!!!') }
const { name, pwd, rolesId} = user
console.log(user,1111)
const token = jwt.sign({ name, pwd,rolesId }, secretKey, { expiresIn: '24h' });
ctx.body = { msg: '登录成功!!!', token }
}
module.exports = {
getUserList,
getUser,
createUser,
updateUser,
deleteUser,
login
}
