node 连接 mysql

1.第一步npm init-y 初始化项目然后引入koa

下列代码应等第二部后全部搞完再配置上去

// 安装koa
cnpm i -S koa
const Koa = require('koa')
const config = require('./config')
const app = new Koa()

//路由
const router = require('./routes')
app.use(router.routes())

//监听端口
app.listen(config.port, () => {
    console.log(`app is started at port: ${config.port}...`)
})

2.首先建立config.js作为mysql的配置文件

// mysql设置
const Config = {
    port: 3000,
    mysql: {
        host: "127.0.0.1",
        // mysql端口
        port: 3306,
        // mysql用户名
        user: "root",
        // 数据库名
        database: 'my_data',
        // mysql密码
        password: 'gold28901645',
        // 编码类型
        char: 'utf8mb4'
    }
}
module.exports = Config

3.新建mysql.js

// 安装mysql包
cnpm i -S mysql
// 获取基础配置
const configs = require('./config')

const mysql = require('mysql').createConnection({
    host: configs.mysql.host,
    port: configs.mysql.port,
    user: configs.mysql.user,
    password: configs.mysql.password,
    database: configs.mysql.database
});

//  封装执行sql脚本对数据库进行读写
const query = (sql) => {
    return new Promise((resolve, reject) => {
        if (!sql) {
            reject()
        }
        mysql.query(sql, (err, rows, fields) => {
            if (err) {
                reject(err)
            }
            resolve(rows, fields)
        })
    })
}

module.exports = { mysql: query }

4.新建controllers目录 和 index.js文件

// controllers/index.js
// 获取文件绝对路径的方法
const _ = require('lodash')
const fs = require('fs')
const path = require('path')

// 映射某文件夹下的文件为模块

const mapDir = d => {
    const tree = {}

    // 获取当前文件夹下的所有文件夹和文件,分成两组,文件夹一组,文件一组
    // partition  : 划分文件和文件夹的方法
    // statSync   : stat数组
    // isDirectory:判断当前文件类型是否为文件夹类型
    const [dirs, files] = _(fs.readdirSync(d)).partition(p => fs.statSync(path.join(d, p)).isDirectory())

    // 映射文件夹
    dirs.forEach(dir => {
        tree[dir] = mapDir(path.join(d, dir))
    })

    // 映射文件
    files.forEach(file => {
        // extname : 获取文件后缀名
        if (path.extname(file) === '.js') {
            // basename : 获取后缀为.js的文件名
            tree[path.basename(file, '.js')] = require(path.join(d, file))
        }
    })
    return tree
}

// 默认导出当前文件夹下的映射
module.exports = mapDir(path.join(__dirname))

5.新建routes文件夹和在routes文件夹下新建index.js

//安装koa-router中间件
cnpm i -S koa-router
const router = require('koa-router')({
    // 路由前缀
    prefix: "/api/v1"
})

const controllers = require('../controllers/index')

// 这里面写路由的控制器
// 看第六步
// router.get('/getUsers', controllers.home.getUsers)
// router.post('/login',controllers.home.login)

module.exports = router

6.在controllers目录下建立自己需要的模块文件夹

这里用users模块为例


// 引入封装好的mysql
const { mysql } = require('../../mysql')

module.exports = async (ctx) => {
    const users = await mysql('select * from y_users where id = 1');

    ctx.body = {
        'users': users
    }
}

然后跳回第5步

// 解除注释
 router.get('/getUsers', controllers.home.getUsers)

这里为什么可以这么写,因为第4步的方法就是将controllers目录下的文件夹中的为.js文件的全部自动引入

7. 输入带 地址:端口/后缀/接口 就可以得到数据

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容