ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

CentOS 环境 Node + Koa2 连接 MySQL (ECS系列三)

2020-07-03 18:02:15  阅读:57  来源: 互联网

标签:Node const CentOS app mysql ctx next 3000 Koa2


Koa 搭建服务

新建一个文件夹 koa_server,进入后

cnpm i -S koa

会生成 node_modules 依赖包,以及 package.json
创建文件 server.js,并写入

const Koa = require('koa');
const app = new Koa();

app.use( async ( ctx ) => {
  ctx.body = 'hello koa2'
})
 
app.listen(3000)
console.log('app running at port 3000.');

运行 node server.js即可,这是最简单的http服务。
浏览器中打开 localhost:3000 就能看到 koa 已经在运行。
在ecs安全组,提前开放 3000 端口访问权限。
然后可以加入中间件(middleware)

const Koa = require('koa');
const app = new Koa();


// logger
app.use(async (ctx, next)=>{
  await next();
  const rt = ctx.response.get('X-Response-Time');
  console.log(`${ctx.method} ${ctx.url} - ${rt}`)
})

// x-response-time
app.use(async (ctx, next)=>{
  const start = Date.now();
  await next();
  const ms = Date.now() - start;
  ctx.set('X-Response-Time', `${ms}ms`)
})

app.use( async ( ctx ) => {
  ctx.body = 'hello koa2'
})
 
app.listen(3000)
console.log('app running at port 3000.');

关于中间件,此处不再展开。

安装 MySQL 连接库

cnpm i -S mysql

创建文件 mysql/index.js

var mysql = require('mysql');
var connection = mysql.createConnection({
  host     : 'MySQL主机地址',
  user     : 'root',
  password : 'MySQL登录密码',
  database : 'MySQL数据库'
});

class Mysql {
    query (param) {
      return new Promise((resolve, reject) => {
        // user 数据表中查询 user_name 为 param 的数据
        connection.query(
        `SELECT * from user WHERE user_name='${param}'`,
        function (error, results, fields) {
            if (error) {
              return reject(error)
            };
            resolve(results)
        });
      })
    }
}

module.exports = new Mysql()

然后在 server.js 中引用


const Koa = require('koa');
const app = new Koa();
const mysql = require('./mysql/index');

// logger
app.use(async (ctx, next)=>{
  await next();
  const rt = ctx.response.get('X-Response-Time');
  console.log(`${ctx.method} ${ctx.url} - ${rt}`)
})

// x-response-time
app.use(async (ctx, next)=>{
  const start = Date.now();
  await next();
  const ms = Date.now() - start;
  ctx.set('X-Response-Time', `${ms}ms`)
})

app.use(async (ctx) => {
    let data = await mysql.query()
    ctx.body = {
        "code": 10,
        "data": data,
        "mesg": 'ok'
    }
})
 
app.listen(3000)
console.log('app running at port 3000.');

标签:Node,const,CentOS,app,mysql,ctx,next,3000,Koa2
来源: https://www.cnblogs.com/_error/p/13231796.html

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有