node+koa2+mysql搭建简易博客学习笔记

github地址

https://github.com/wclimb/Koa2-blog

使用方式:

1、clone到本地

2、在mysql中建立名字为nodesql的数据库

3、$ cd Koa2-blog npm install

  npm i -g supervisor

4、$ supervisor --harmony index

  • config 存放默认文件
  • lib 存放操作数据库文件
  • middlewares 存放判断登录与否文件
  • public 存放样式文件
  • routes 存放路由文件
  • views 存放模板文件
  • index 程序主文件
  • package.json 包括项目名、作者、依赖等等

 

接着安装包,安装之前我们使用cnpm安装

1
$ npm install -g cnpm --registry=https://registry.npm.taobao.org

 

1
$ cnpm i koa koa-bodyparser koa-mysql-session koa-router koa-session-minimal koa-static koa-views md5 moment mysql ejs --save

 

 

  1. koa node框架
  2. koa-bodyparser 表单解析中间件
  3. koa-mysql-sessionkoa-session-minimal 处理数据库的中间件
  4. koa-router 路由中间件
  5. koa-static 静态资源加载中间件
  6. ejs 模板引擎
  7. md5 密码加密
  8. moment 时间中间件
  9. mysql 数据库
  10. koa-views 模板呈现中间件

 

配置config

const config = {
  // 启动端口
  port: 3000,
  // 数据库配置
  database: {
    DATABASE: 'nodesql',
    USERNAME: 'root',
    PASSWORD: '',
    PORT: '3306',
    HOST: 'localhost',
    //CHARSET:'utf-8'
  }
}

module.exports = config

 

Nodejs使用MysQL的连接池

 

使用连接池可以帮助我们更好的管理数据库连接。数据库连接池可以限制连接的最大数量,复用已有的连接等。

首先,我们需要创建一个连接池:

 

var mysql =  require('mysql');                  
  var pool =  mysql.createPool({
	host : “hostName”,
	user : “username”,
	password: “password”
  });


其次,我们可以从创建的连接池中获取到一个我们需要的连接:

 

 

pool.getConnection(function(err, connection){
  
});


使用回调函数的参数connection来查询数据库。最后使用connection.realease()方法释放数据库连接。

 

 

pool.getConnection(function(err, connection){
  connection.query( “select * from table1”,  function(err, rows){
  	if(err)	{
  		throw err;
  	}else{
  		console.log( rows );
  	}
  });
  
  connection.release();
});

 

koa-bodyparser表单解析

Usage

var Koa = require('koa');
var bodyParser = require('koa-bodyparser');

var app = new Koa();
app.use(bodyParser());

app.use(async ctx => {
  // the parsed body will store in ctx.request.body
  // if nothing was parsed, body will be an empty object {}
  ctx.body = ctx.request.body;
});

 

// 这里我们先通过查找有没有类似/posts?author=XXX 的连接跳转,如果有就执行下面这句话,把用户名取下来,由于用户名存在中文,所以我们进行解码
    if (ctx.request.querystring) {
        console.log('ctx.request.querystring',decodeURIComponent(ctx.request.querystring.split('=')[1]))
        await userModel.findDataByUser(decodeURIComponent(ctx.request.querystring.split('=')[1]))
            .then(result=>{
                res=JSON.parse(JSON.stringify(result))
                console.log(res)
            })
        await ctx.render('posts',{
                session:ctx.session,
                posts:res    
            })
    }else{

 

二、服务器如何获取浏览器提交的数据?
    1.获取POST数据:context.Request.Form[“txtname”]
     2.获取GET参数:context.Request.QueryString[“txtname1”]

三、服务器如何向浏览器输出数据?
  1. 服务器向浏览器输出文本内容:

    context.Response.ContentType = "text/plain";

    context.Response.Write(“我是从服务器输出到浏览器的数据!:)”);
    //Response 允许开发人员对当前页面的输出流进行操作
    //write:直接在页面上输出内容,将内容存在httpwriter中的char数组

 

   2.服务器向浏览器输出js代码:
    context.Response.ContentType = "text/html";
    context.Response.Write("<script>alert('格式错误');</script>");

  

  3.redirect:重定向到另外一个页面,服务其发送命令让浏览器跳转
   原理:服务器向浏览器发送一个包含302状态码和Location的响应报文,浏览器看到302后就会自动请求Location指定的页面。Response.Redirect(location);


   4.end:立即输出Response里保存的响应报文数据,并停止当前页面代码的执行。Response.End();

request.querystring

Get raw query string void of ?.

request.querystring=

Set raw query string.

req.querystring

获取查询参数字符串(url中?后面的部分),不包含 ?。

req.querystring=

设置查询参数。

原文网址:http://www.wclimb.site/2017/07/12/Node-Koa2-Mysql-%E6%90%AD%E5%BB%BA%E7%AE%80%E6%98%93%E5%8D%9A%E5%AE%A2/

转载于:https://www.cnblogs.com/lu-yangstudent/p/7520525.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值