ICode9

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

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

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

标签: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

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

ICode9版权所有