nodejs搭建koa后端
1、初始化
(1)、package.json
使用npm init -y
进行初始化package.json
(2)、引入koa和koa-router
npm install koa --save, npm insatll koa-router --save
(3)、新建app.js
然后进行引入koa
和 koa-router
// app.js
// 引入模块
const koa = require('koa')
const Router = require('koa-router')
// 实例化koa
const app = new koa()
const router = new Router()
// 路由
router.get('/', async (ctx) => {
ctx.body = {
msg: 'Hello koa interface' }
})
// 配置路由
app.use(router.routes()).use(router.allowedMethods())
// 设置端口号
const port = process.env.PORT || 5000
// 端口号监听
app.listen(port, () => {
console.log(`server started on ${
port}`)
})
然后进行配置package.json
中的相关配置
"scripts": {
"start": "node app.js",
"server": "nodemon app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
(4)、连接MongoDB数据库
首先使用npm i mongoose --save
,然后进行引入
// config文件夹下的keys.js
module.exports = {
mongoURL: 'mongodb+srv://test:test123456@cluster0.7aujy.mongodb.net/test', // 数据库地址
secretOrKey: 'secret',
}
// app.js
const mongoose = require('mongoose')
// config
const db = require('./config/keys').mongoURL
// 连接数据库
mongoose
.connect(db, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => {
console.log('MongoDb Connected...')
})
.catch((err) => {
console.log(err)
})
(5)、设计接口以及模板
新建routes
文件夹,在其中创建一个api
文件夹,在api
文件夹下新建users.js
文件,然后进行引入相应的模块。
// users.js
const Router = require('koa-router')
const router = new Router()
/**
* @route GET api/users/test
* @desc 测试接口地址
* @access 接口是公开的
*/
router.get('/test', async (ctx) => {
ctx.status = 200
ctx.body = {
msg: 'user works....' }
})
// 导出
module.exports = router.routes()
然后在app.js
中指定映射地址,进行引入users.js
// app.js
// 引入users.js
const users = require('./routes/api/users')
// 配置路由地址localhost:5000/api/users
router.use('/api/users', users)
(6)、配置接口所需要的模型
在根目录下创建一个models
文件夹,然后创建users.js
中的接口所需要的模型,创建一个User.js
文件,使用mongoose
进行配置模型。
// User.js
// 引入mongoose模块
const mongoose = require('mongoose')
// 创建模板
const Schema = mongoose.Schema
// 实例化模板
const UserSchema = new Schema({
name: {
type: String,
require: true,
},
email: {
type: String,
require: true,
},
password: {
type: String,
require: true,
},
avatar: {
type: String,
},
date: {
type: Date,
default: Date.now,
},
})
// users就是在数据库中的表
module.exports = User = mongoose.model('users', UserSchema)
然后在users.js
中进行引入User
模型
// users.js
// 引入User模板
const User = require('../../modules/User')
进行引入之后,我们就可以进行接口的设计开发了,我们来设计一个注册接口。因为在注册接口中需要获取到前端传递过来的数据,所以需要安装一个模块koa-bodyparser
,在app.js
中进行引入和使用。具体的使用方法可以在npm
中进行查询,然后查看。
// app.js
const bodyParser = require('koa-bodyparser')
app.use(bodyParser())
// users.js
/**
* @route POST api/users/register
* @desc 注册接口地址
* @access 接口是公开的
*/
router.post('/register', async (ctx) => {
// console.log(ctx.request.body)
// 存储到数据库里面
const findResult = await User.find({
email: ctx.request.body.email })
if (findResult.length > 0) {
ctx.status = 500
ctx.body = {
email: '邮箱已经存在!' }
} else {
// 没查到
const newUser = new User({
name: ctx.request.body.name,
email: ctx.request.body.email,
password: tools.enbcrypt(ctx.request.body.password),
})
// console.log(newUser)
// 存储到数据库
await newUser
.save()
.then((user) => {
ctx.body = user
})
.catch((err) => {
console.log(err