安装mongoddb
地址:Download MongoDB Community Server | MongoDB
2.配置启动mongodb
安装koa
npm install koa koa-json koa-bodyparser koa/router @koa/cors mongoose
app.js
const Koa = require('koa')
const app = new Koa()
const json = require('koa-json') // 用于将http响应的数据转换为json格式
const bodyParse = require('koa-bodyparser') // 解析http请求的消息体
const Router = require('koa-router')
const cors = require('@koa/cors') // 允许跨域
const mongoose = require('mongoose')
const {BASE_URL} = require('./config/Account')
const router = new Router() //创建路由
app.use(cors())
app.use(json())
app.use(bodyParse())
// 连接数据库
mongoose.connect(BASE_URL).then(res =>{
console.log('数据库连接成功')
}).catch(err =>{
console.log('数据库连接失败')
})
router.get('/login',ctx=>{
console.log('这是一个get接口')
})
app.use(router.routes())
app.use(router.allowedMethods({}))
app.listen(3000,()=>{
console.log('应用已经启动,http://localhost:3000');
})
module.exports = {
// 数据库地址
BASE_URL:'mongodb://127.0.0.1/lvyou-projects'
}
使用monggoose操作mongodb 增删改查
const mongoose = require('mongoose')
mongoose.pluralize(null) // 去掉集合后面的s
const {Schema,model} = mongoose
// 使用mongoose定义数据模型
// 用户账号表
const UserSchema = new Schema({
name:String,
age:Number,
mobile:String
});
module.exports = {
modelUser:model('user',UserSchema)
}
在路由文件上引用
const Router = require('koa-router')
const router = new Router() //创建路由
const {modelUser} = require('../../models/collection')
新增
router.post('/add',async ctx=>{
const res = await modelUser({name:'李四',age:20,mobile:'15625775964'}).save()
})
// 新增
router.post('/create',async ctx=>{
const res = await modelUser.create(
{
name:'李四',
age:20,
mobile:'15625775964'
}
)
})
删除
router.post('/del',async ctx=>{
const res = await modelUser.deleteMany({
name:'李四'
})
console.log(res)
})
router.post('/delAge',async ctx=>{
const res = await modelUser.deleteMany({
age:{$eq:20} // 等于
})
console.log(res)
})
删除查询的集合
更新数据
// name为小明更新为小红,只更新一条
router.post('/update',async ctx=>{
const res = await modelUser.findOneAndUpdate(
{
name:'小明'
},
{
name:'小红'
}
)
console.log(res)
})
// 更新多条
router.post('/update',async ctx=>{
const res = await modelUser.updateMany(
{
name:'小明'
},
{
name:'小红'
}
)
console.log(res)
})
查询
router.post('/find',async ctx=>{
const res = await modelUser.find({
name:'小红'
})
console.log(res)
})
router.post('/findAge',async ctx=>{
const res = await modelUser.find({
age:{$lt:30} // 小于30
})
console.log(res)
})
接口规范
// 统一返回给前端的接口数据格式
const responseHandler = async(ctx,next) =>{
ctx.send = (msg='SUCCESS',code=200,data=null,error=null,extra=null) =>{
ctx.body = {
msg,// 表示成与否
data, // 返回前端
error,// 错误说明
extra // 额外说明
}
ctx.status = code
}
await next()
}
module.exports = responseHandler
在app.js引入
const responseHandler = require('./config/result')
app.use(responseHandler)
阿里云短信验证
"@alicloud/dysmsapi20170525": "^2.0.24", "@alicloud/openapi-client": "^0.4.6",