koa和mongodb使用

165 阅读1分钟

Koa快速安装开始

// 初始化package.json
npm init

// 安装koa
npm install koa

// 安装koa-router
npm install koa-router

// 安装koa-body
npm install koa-body  //解析request.body

//安装 nodemon
npm install -g nodemon

新建一个app.js

const Koa = require("koa")
const Router = require("koa-router")
const koabody = require("koa-body")

// 实例化app
const app = new Koa()
const router = new Router()

router.get("/", ctx => {
    ctx.body = "1111"
})
app.use(koabody())
app.use(router.routes()).use(router.allowedMethods())

app.listen(2000, () => {
    console.log("正在监听端口号");
})

在package.json里面创建server,并直接运行

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "server":"nodemon app.js"
  },

远程链接mongodb数据库

  //安装 mongoose
   npm install mongoose

新建一个文件夹config的Key.js 里面写mongodb的钥密

  module.exports = {
   Url: "//钥密"
 }

app.js

   const mongoose = require("mongoose")
   const url = require("./config/key").Url
   // 链接数据库
   mongoose.connect(url, { useNewUrlParser: true })
    .then(() => {
    console.log("mongoose链接成功");
    }) 
    .catch(err => {
    console.log('连接错误' + err);
    })
     //终端会显示是否连接上

新建一个router文件夹的users.js

   const Router = require("koa-router")
   const router = new Router()

   router.get("/text", async ctx => {
    ctx.status = 200
    ctx.body = { msg: "text" }
  })

   module.exports = router.routes()

app.js

 const users = require("./router/users")
 
 router.use("/api", users)
 app.use(router.routes()).use(router.allowedMethods())   

新建models

  const mongoose = require("mongoose")
   const Schema = mongoose.Schema

// 实例化一个数据模板
const template = new Schema({
    name: { type: String, required: true },
    sex: { type: String, required: true },
    data: { type: String, required: true },
})
module.exports = mongoose.model("user", template)

/router/users.js

const Router = require("koa-router")
const router = new Router()
const User = require("../models/User")  //引入models/user
router.get("/text", async ctx => {
    ctx.status = 200
    ctx.body = { msg: "text" }
})


// 存储到数据库
router.post("/reg", async ctx => {
    ctx.body = ctx.request.body;
    const finds = await User.find({ name: ctx.request.body.name })
    if (finds.length > 0) {
        ctx.body = { msg: "用户已存在" }
    } else {
        const newUser = new User({
            name: ctx.request.body.name,
            sex: ctx.request.body.sex,
            data: ctx.request.body.data
        })
        await newUser.save().then(res => {
            ctx.body = newUser
        }).catch(err => {
            console.log(err);
        })
    }
})

module.exports = router.routes()