koa2+mongodb的使用详解

koa2+mongodb的使用详解

1、开始

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

2、目录详解

名称 解释
app.json 根入口文件
routes>文件 定义了localhost:3000/文件名下的路由
package.json 依赖包文件
config 数据库配置
modules mongodb数据库返回数据配置
utils 封装的工具

3、使用log4js封装登录日志

3.1、使用log4js
const log4js = require('log4js')

3.2、log4js.configure() 配置

  • 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)
}

4、mongodb入门

koa2+mongodb的使用详解_第1张图片
koa2+mongodb的使用详解_第2张图片
koa2+mongodb的使用详解_第3张图片

koa2+mongodb的使用详解_第4张图片

koa2+mongodb的使用详解_第5张图片

5、koa2连接mongodb

5.1、使用mongoose框架
npm i mongoose

#or

yarn add mongoose
5.2、连接mongodb
const mongoose = require('mongoose')

mongoose.connect(
config.URL, //数据库集合地址'mongodb://127.0.0.1:27017/demo'
{ useNewUrlParser: true, useUnifiedTopology: true }//固定配置
)
5.3监控连接
const log4j = require('../utils/log4j')
const db = mongoose.connection
db.on('error', () => {//使用上面封装的log4j打印日志
    log4j.error('**数据库连接失败**')
})

db.on('open', () => {
    log4j.info('**数据库连接成功**')
})
5.4、配置数据库返回数据
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)

6、配置路由

6.1
  • 首先引入router
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

你可能感兴趣的:(前端,mongodb,数据库,node.js)