资讯专栏INFORMATION COLUMN

简单的学习一下node吧——还在学习中~~~

AbnerMing / 1201人阅读

摘要:运用自己的业余时间学习学习制作简单点的小例子,代码写的有点随意,我这里只相当于提供一个引子,升华部分还是需要大家自己去成长,相比来说要比好用许多,没事大家可以自己学习学习,多学习一点东西总是好的项目地址使用数据库管理破解版地址连接失败解决方

运用自己的业余时间学习学习node.js+koa+mysql,制作简单点的小例子,代码写的有点随意,我这里只相当于提供一个引子,升华部分还是需要大家自己去成长,相比来说koa要比express好用许多,没事大家可以自己学习学习,多学习一点东西总是好的!
项目地址https://github.com/iopwanglei...
1.使用数据库管理navicat for MySQL 破解版地址
    https://blog.csdn.net/chanffffdlleerr/article/details/74606548
2.navicat 连接失败解决方案
    https://blog.csdn.net/u013700358/article/details/80306560
3.联合查询
    * user表
    CREATE TABLE IF NOT EXISTS user (
    uid int(11) NOT NULL,
    username varchar(30) NOT NULL,
    password char(32) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    +-----+-----------+----------+
    | uid | username | password |
    +-----+-----------+----------+
    | 1 | 张翰 | 123456 |
    | 2 | 李二蛋 | 1235531 |
    | 3 | 李文凯 | 123455 |
    | 4 | 安小超 | 12311q |
    | 5 | 韩小平 | 1asdas |
    | 6 | 张三 | 123555 |
    +-----+-----------+----------+
  * order_goods表
      CREATE TABLE IF NOT EXISTS order_goods (
    oid int(11) NOT NULL,
    uid int(11) NOT NULL,
    name varchar(50) NOT NULL,
    buytime int(11) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    +-----+-----------+----------+
    | oid | uid | name | buytime |
    +-----+-----------+----------+
    | 1  | 6  | 张翰  | 123456 |
    | 2  | 1  | 李二蛋| 1235531 |
    | 3  | 2  | 李文凯| 123455 |
    +-----+-----------+----------+
  * sql的left join 、right join 、inner join之间的区别
    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 
    right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
    inner join(等值连接) 只返回两个表中联结字段相等的行
  * 内连接查询: select表,字段uid,username[as]使用别名,select order_goods表,字段(和前边一样)inner join 表(order_goods)on 条件 = 匹配条件
       select user.uid ,user.username as username,order_goods.oid,order_goods.uid,order_goods.name as shopname from user inner join order_goods on user.uid = order_goods.uid;
  * 外连接 左连接:select 表(user)以左表(user)为主,显示, on 条件
       select * from user left join order_goods on user.uid = order_goods.uid;
  * 外连接 右连接:以右表为主显示核对成功的即on的条件成立的
       SELECT * FROM `user` RIGHT JOIN order_goods on user.uid = order_goods.uid;
  * 子查询 : 子查询的关键字包括in、not in、=、!=、exists、not exists等。
       select * from user where uid in (1,2,3); 查询user表中uid 为1,2,3的数据
    select * from user where uid in (select uid from order_goods); 查询order_goods表中uid和user表中相同的,在user表中展示
  * 交叉连接: CROSS JOIN
       SELECT * FROM user CROSS JOIN order_goods; 自行查看展示
4.安装koa等所需
   npm i koa //使用async await 异步须node版本为7.6.0以上
   npm i koa-router
   npm i koa-bodyparser  //解析中间件
   npm i mysql
5.目录结构

6.config文件下mysql.js 数据库连接池
const mysql = require("mysql");
// 创建连接池
let pool = mysql.createPool({
  host: "127.0.0.1", // 主机
  user: "root",        //  mysql认证用户名
  password: "789456", //   mysql用户密码
  port: "3306",       //    端口
  database: "数据库"
});

let query = ( sql, values ) => {
  return new Promise(( resolve, reject ) => {
    pool.getConnection(function(err, connection) {
      if (err) {
        reject( err )
      } else {
        connection.query(sql, values, ( err, res) => {

          if ( err ) {
            reject( err )
          } else {
            resolve( res )
          }
          connection.release()
        })
      }
    })
  })
}
module.exports = query;
7.路由user_router.js,这里需要调用servse文件中的user_servse.js里面的方法
const router = require("koa-router")();
const user = require("../servse/user_servse.js");
const routers = router
    .post("/add", user.selectData);
module.exports = routers;
8.路由index.js使用
const router = require("koa-router")();
const user = require("./user_router.js");

router.use(user.routes(), user.allowedMethods())

module.exports = router;
9.user_servse.js方法,以及sql语句,引入mysql.js
const query = require("../config/mysql.js");
// 新增插入数据查询条件 
let insert = "INSERT INTO `goods` (`oid`, `uid`, `name`, `buytime`) VALUES (?, ?, ?, ?)";

const user = {
    async selectData(ctx) {
       let data = ctx.request.body
        let userAddParams = [data.oid,data.uid,data.name,data.buytime];
        if(Object.keys(data).length > 0) {
            try {
                await query(insert, userAddParams);
                ctx.response.body = {
                  status: 200,
                  description: "ok",
                  result: data
                }
              } catch(err) {
                    ctx.response.body = {
                        status: 404
                    }
              }
          }
      }
}
module.exports = user;
10.app.js启动文件
const Koa = require("koa");
const app = new Koa();
const bodyParser = require("koa-bodyparser");
const routers = require("./router/index");


// 配置ctx.body解析中间件
app.use(bodyParser())

// 初始化路由中间件
app.use(routers.routes()).use(routers.allowedMethods())

app.listen(3000);
学习资料 喜欢的童鞋点个赞
1.http://mysql.phpxy.com/75314
2.http://www.manongjc.com/artic...
3.http://www.runoob.com/mysql/m...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95876.html

相关文章

  • 实用IT类网站及工具大集合

    摘要:整理的一些实用的类网站及工具。链接云适配有时候我们做出的网站没有用到响应式布局,也可能我们的网站的像素宽度已经规定成具体的多少像素了。同时提供多个开放,功能实用,非常强大。 整理的一些实用的IT类网站及工具。 1.聚合数据 大家在开发过程中,可能会用到各种各样的数据,想找一些接口来提供一些数据。比如天气预报查询,火车时刻表查询,彩票查询,身份证查询等等。有了这个接口,直接调用即可。各种...

    rollback 评论0 收藏0
  • 30岁零基础自学编程,先学哪种语言最好?

    摘要:大学,光学工程研究生毕业,和程序猿完全不搭边。那怎么办,试着学一学呗,学习才是程序猿的天性。所以我在想程序猿是不是都需要新知识刺激一下,才能保持兴奋的头脑。有句话说的很对程序猿就像好奇的猫,追着毛球的线头玩,最后一个毛球在脑袋里搅浆糊。 说说我自己的经历。211大学,光学工程研究生毕业,和程序猿完全不搭边。 毕业后进了成都某国字头研究所,在行业里摸爬滚打了四年,2018年机缘巧合在家养...

    xietao3 评论0 收藏0
  • ES6-7

    摘要:的翻译文档由的维护很多人说,阮老师已经有一本关于的书了入门,觉得看看这本书就足够了。前端的异步解决方案之和异步编程模式在前端开发过程中,显得越来越重要。为了让编程更美好,我们就需要引入来降低异步编程的复杂性。 JavaScript Promise 迷你书(中文版) 超详细介绍promise的gitbook,看完再不会promise...... 本书的目的是以目前还在制定中的ECMASc...

    mudiyouyou 评论0 收藏0

发表评论

0条评论

AbnerMing

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<