1.1、使用koa-generator快速生成koa服务的脚手架工具
cnpm i -g koa-generator
#or
yarn global add koa-generator
1.2、进入项目目录,执行生成命令
koa2+项目名
1.3、运行项目
// 安装依赖
cnpm i
#or
npm i
#or
yarn
//运行
npm start
#or
yarn start
名称 | 解释 |
---|---|
app.json | 根入口文件 |
routes>文件 | 定义了localhost:3000/文件名下的路由 |
package.json | 依赖包文件 |
config | 数据库配置 |
modules | mongodb数据库返回数据配置 |
utils | 封装的工具 |
const log4js = require('log4js')
3.2、log4js.configure() 配置
log4js.configure({
appenders: {
//日志输出位置
console: { type: 'console' },
info: { type: 'file', filename: 'logs/info-logs.log' },
error: {
type: 'dateFile', filename: 'logs/error-log/log', pattern: 'yyyy-MM-dd.log', alwaysIncludePattern: true//filename+pattern组合文件名
}
},
//种类
categories: {
default: { appenders: ["console"], level: levels.debug },
info: { appenders: ['info', 'console'], level: levels.info },
error: { appenders: ['error', 'console'], level: levels.error }
},
})
//接受一个要打印的参数c
exports.debug = function (c) {
//getLogger(参数)参数是上面配置文件的级别比如info
let log = log4js.getLogger()
log.level = levels.debug
log.debug(c)
}
npm i mongoose
#or
yarn add mongoose
const mongoose = require('mongoose')
mongoose.connect(
config.URL, //数据库集合地址'mongodb://127.0.0.1:27017/demo'
{ useNewUrlParser: true, useUnifiedTopology: true }//固定配置
)
const log4j = require('../utils/log4j')
const db = mongoose.connection
db.on('error', () => {//使用上面封装的log4j打印日志
log4j.error('**数据库连接失败**')
})
db.on('open', () => {
log4j.info('**数据库连接成功**')
})
const mongoose = require('mongoose')
const userSchema = mongoose.Schema({
userId:Number,//数据类型
userName:String,
age: Number,
msg: {
type: String,
default:'hello koa2+mongodb'//配置默认
}
})
//第一个参数是跟 model 对应的集合( collection )名字的 单数 形式。 Mongoose 会自动找到名称是 model 名字 复数 形式的 collection 。
// 对于上例,user 这个 model 就对应数据库中 users 这个 collection。.model() 这个函数是对 schema 做了拷贝(生成了 model)。
// 你要确保在调用 .model() 之前把所有需要的东西都加进 schema 里了!
module.exports =mongoose.model("user",userSchema)
const router = require('koa-router')()
router.prefix('/users')
定义路由逻辑
// 异步函数同步化处理schema查找到的数据
// res 就是返回的数据
const User = require('../modules/msgSchema')
const log4j = require('../utils/log4j')
router.get('/msg',async function (ctx) {
try {
const { id } = ctx.request.query
const res = await User.findOne({
id
})
if (res) {
const code = '200'
const data = res || ''
const msg = 'success'
console.log(res)
ctx.body = {
code, data, msg
}
} else {
const code = '404'
const data = res || ''
const msg = 'err'
ctx.body = {
code, data, msg
}
}
} catch (error) {
ctx.body = {
error,
code:'404',
msg: '出错了'
}
log4j.error(error)
}
})
module.exports = router
mongodb参考文章:链接: http://www.mongoosejs.net/docs/
koa:链接: http://t.csdn.cn/9BPnn