序文
このプロジェクトを作成するには多くの依存関係が必要です。依存関係をインポートするノードも直接、非常に便利です。
let mysql=require('mysql')
このプロジェクトで使用した依存関係は次のとおり
です。後で使用し、1つずつ紹介します。
書き込みインターフェース
インターフェースを作成する前に、データベースを構成し、SQLステートメントを処理するメソッドを作成する必要があります。
controllersフォルダーの下にdefaultConfig.jsとmysqlConfig.jsを作成します。
//defaultConfig.js
const config = {
// 数据库配置
database: {
DATABASE: '****', //你新建的数据库名称
USERNAME: 'root', //mysql用户名
PASSWORD: '******', //mysql密码
PORT: '3306', //mysql端口号,m默认3306
HOST: '127.0.0.1' //本地服务器ip
}
}
module.exports = config
//mysqlConfig.js
let mysql = require('mysql')
let config = require('./defaultConfig')
let pool = mysql.createPool({
host: config.database.HOST,
user: config.database.USERNAME,
password: config.database.PASSWORD,
database: config.database.DATABASE
})
let allServices = {
query: function (sql, values) {
return new Promise((resolve, reject) => {
pool.getConnection(function (err, connection) {
if (err) {
console.log('数据库链接失败')
reject(err)
} else {
connection.query(sql, values, (err, rows) => {
if (err) {
reject(err)
} else {
resolve(rows)
}
connection.release()
})
}
})
})
}
}
module.exports = allServices
ルーターの構成
ルートフォルダに新しいindex.jsファイルを作成して、すべての.jsルーティングファイルを同じディレクトリにインポートおよびエクスポートします。
//index.js
const router = require('koa-router')()
const compose = require('koa-compose')
const glob = require('glob')
const {
resolve } = require('path')
registerRouter = () => {
let routers = [];
glob.sync(resolve(__dirname, './', '**/*.js'))
.filter(value => (value.indexOf('index.js') === -1))
.map(router => {
routers.push(require(router).routes())
routers.push(require(router).allowedMethods())
})
return compose(routers)
}
module.exports = registerRouter
app.jsを構成する
//app.js
const Koa = require('koa')
const app = new Koa()
const registerRouter = require('./routes/index')//导入routes导出的文件
app.use(registerRouter())
ルートの下にjsルーティングファイルを作成する
新しいusers.jsファイルを作成する
//users.js
const router = require('koa-router')()
const api = require('../controllers/api')
router.prefix('/users')
//获取所有用户
router.get('/你的路由名字', async (ctx, next) => {
const query = ctx.request.query //get的请求从这里获取参数
if (!query.phone&&query.phone!='' || !query.nickName&&query.nickName!='' || !query.gender&&query.gender!='') {
return ctx.body = {
code: 400,
status: 200,
message: '错误请求,请传必要的参数'
}
}
let params = {
}
params.phone=query['phone']
params.nickName=query['nickName']
params.gender=query['gender']
const pageIndex=ctx.request.query.pageIndex||1
const pageSize=ctx.request.query.pageSize||10
let result = await api.findUserData(params)
let list = result.slice((pageIndex - 1) * pageSize, pageIndex * pageSize)
let obj = {
}
obj.list = list
obj.total = result.length
obj.pageIndex=pageIndex
ctx.body = {
code: 200,
data: obj,
message: '获取用户数据成功'
}
})
//增加用户
router.post('/你的路由名字', async (ctx, next) => {
const body = ctx.request.body //post的请求从这获取前端传的数据
let params = {
}
params.nickname =body['nickname']
params.avatarUrl = body['avatarUrl']
params.gender = body['gender']
let result = await api.addWxUser(params)
if (result.affectedRows) {
//更新成功
ctx.body = {
code: 200,
status: 200,
message: '添加成功'
}
} else {
ctx.body = {
code: result.code,
status: result.status,
message:result.message
}
}
})
//最后将路由导出
module.exports = router
controllersフォルダーの下に新しいapi.jsファイルを作成します
//api.js
const allServices = require('./mysqlConfig')//导入处理sql的方法
let api = {
//获取小程序用户列表
findUserData: function (params) {
***写你的sql语句****
//执行你的sql语句并return出去
return allServices.query(_sql)
},
// 添加用户
addWxUser:async (params) => {
***写你的sql语句****
//执行你的sql语句并return出去
return allServices.query(_sql)
}
}
//导出供路由文件使用
module.exports = api
その後、他のインターフェイスは同じです。
テストインターフェース
私が使う郵便屋さんインターフェースをテストするために
、呼び出し時に以下がサーバーに表示されます。
上記は、この書き込みインターフェースの内容です。