Nodejs + express + sql 学习记录(四)

108 阅读1分钟

1. 数据库改用 MongoDB

1. 插件安装

npm i mongodb --save npm i mongoose --save

2. 连接 mongodb

  • 创建 db 文件夹和 mongodb.js
const mongoose = require('mongoose')

mongoose
  .connect('mongodb://127.0.0.1:27017/myblog')
  .then((client) => {
    console.log("mongodb connect success!");
  })
  .catch((err) => {
    console.log(err);
  })

module.exports = mongoose
  • 创建 User Model
const mongoose = require('../db/mongodb')
// 定义数据规范
const UserSchema = mongoose.Schema({
  username: {
    type: String,
    required: true,
    unique: true
  },
  password: String,
  realname: String
}, { timestamps: true })

// Model对于collection
const User = mongoose.model('user', UserSchema)
module.exports = User
  • Blog model
const mongoose = require('../db/mongodb')
// 定义数据规范
const BlogSchema = mongoose.Schema({
  title: {
    type: String,
    required: true
  },
  content: String,
  author:{
    type: String,
    required: true
  }
}, { timestamps: true })

// Model对于collection
const Blog = mongoose.model('blog', BlogSchema)
module.exports = Blog

3. 调取数据返还

1. 接受请求

  • 在 route 文件夹 user.js
const { login } = require('../controller/user')
const router = require('koa-router')()

router.prefix('/api/user')
 
router.post('/login', async function(ctx, next){
  const { username, password } = ctx.request.body
  const res = await login(username, password)
  ctx.body = {
    errno: 0,
    res
  }
})

  • blog 路由
const { getList } = require('../controller/blog');

const router = require('koa-router')()
router.prefix('/api/blog')
router.get('/list', async function (ctx, next) {
  const { author, keyword} = ctx.request.body

  const result = await getList(author, keyword)
  ctx.body = result
});

2. 调取数据 controller

const User = require('../models/User')
const login = async (username, password) => {
  const user = await User.find({
    username,
    password
  })
  if(user == null){
    return {}
  }
  return user
}
module.exports = {
  login
}
  • blog 文件
const Blog = require('../models/Blog')
const getList = async (author, keyword) => {
  const whereOption = {}
  if(author) whereOption.author = author
  if(keyword) whereOption.keyword = keyword
  const list = await Blog.find(whereOption).sort({_id: -1})
  return list
}

module.exports = {
  getList
}