node以及koa2
发布于 10 个月前 作者 mschange 1874 次浏览 来自 问答

谁知道哪里可以找到node以及koa2链接sql,以及写接口的demo,求分享个地址啊,谢谢大佬们

24 回复

@im-here node以及koa2中如何连数据库sql啊

@mschange 什么数据库你得说清楚啊 我发给你的是mysql的连接方式

@im-here 我说的就是mysql,在node项目中如何连啊

@mschange 我发给你的连接打开看了么?里面都有demo啊, 非要我把代码给你贴出来…

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});
 
connection.connect();
 
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});
 
connection.end();

@im-here 我看你发的npm包了,没看懂,尴尬,谢谢你,我看看你发的这些,我没有连过数据库,我想用koa2出接口,前后端分离,但是不知道该怎么搞

@im-here 能不能跟你学koa2?

@mschange 自己网上找资料吧,这东西现在已经很成熟了,文档教程什么的一搜一大把

看mysql文档学习很有必要,但真正使用还是建议使用成熟的框架,比如orm和事务等特性都有很好的封装。建议从EggJS上手,然后再参考一下CabloyJS

@zhennann koa2都没完明白,现在去直接egg,没有效果的,兄弟


const config = require('../config')

var connection = mysql.createConnection({
  host: config.database.HOST,
  user: config.database.USERNAME,
  password: config.database.PASSWORD,
  database: config.database.DATABASE
})

var pool = mysql.createPool({
  host: config.database.HOST,
  user: config.database.USERNAME,
  password: config.database.PASSWORD,
  database: config.database.DATABASE
})

module.exports = {
  queryPromise: function(sql, params) {
    return new Promise((resolve, reject) => {
      connection.connect(async function(err) {
        if (err) {
          console.error('连接出错: ' + err.stack)
          throw err
        }
        console.log('Database connection successful, connected as id ' + connection.threadId)
        console.info(sql, params)
        connection.query(sql, params, function(err, results, fields) {
          if (err) reject(err)
          console.log(`插入数据:  ${results.affectedRows} 行;  更新数据: ${results.changedRows} 行`)
          resolve(results)
          connection.end(function(err) {
            if (err) {
              console.error('数据库关闭失败' + err)
              throw err 
            }
            console.log('数据库关闭')
          })
        })
      })
    })

  },
  queryPoolPromise: function(sql, params) {
    return new Promise((resolve, reject) => {
      pool.getConnection(function(err, connection) {
        if (err) {
          console.log('连接出错:' + err)
          reject(err)
        }
        console.log('Database connection successful, connected as id ' + connection.threadId)
        console.info('SQL查询语句', sql, params)
        connection.query(sql, params, function(err, results, fields) {
          if (err) throw err
          let length = results.length ? results.length : 0
          console.log(`返回数据: ${length} 条;`)
          resolve(results)
          connection.release()     
          console.info('连接使用完成,返回到连接池')
        })
      })
    })
  }
}

直接用mysql2包连接 或者 orm如:sequelize 进行连接

@afacode 可以跟你学koa2吗

@OXOYO 你们谁带我学学koa2啊

@mschange 跟狼叔学吧,我还是小白

@OXOYO 狼叔发的都是文章,讲的都是概念性的

@mschange 好吧,那可以看看我这个人项目吧 前端Vue:https://github.com/OXOYO/X-WebDesktop-Vue 后端Koa:https://github.com/OXOYO/X-WebDesktop-Api-Koa 线上预览:http://47.93.49.248/X-WebDesktop-Vue

前端技术栈:

vue-cli       脚手架

Vue           核心框架
vue-router    路由
vuex          状态管理
iview         UI库
axios         Ajax库
animate.css   动画库

webpack       工程化

后端技术栈:

Koa               核心框架
koa-router        路由中间件
koa-cors          跨域中间件
axios             Ajax库
jsonwebtoken      JsonWebToken
log4js            日志输出
mysql2            数据库
sequelize         数据库ORM

gulp              工程化
pm2               进程管理

@OXOYO 好,能加个口不

我们用的 typeorm 连的,可以参考: https://github.com/notadd/nt-module-user

@songsunli 非常谢谢兄弟们

@zuohuadong 非常谢谢兄弟们

@mschange 群里聊就好 333765077

回到顶部