NodeJS操作mysql
- 2020 年 3 月 16 日
- 筆記
背景
在 KOA2 中操作mysql 資料庫,行程本文。
安裝包
yarn add mysql --save
導入
var mysql = require('mysql');
創建 mysql 數據連接
var connection = mysql.createConnection(option); connection.connect(); console.log(`打開資料庫成功`); return connection;
操作資料庫
let promise = new Promise((resolve, reject) => { let sql2 = mysql.format(sql, paraArray); console.log(` #sql: ${sql2}`); db.query(sql2,paraArray,(error, results, fields)=>{ let str =' #result:'; str+=' error:'+error; str+=' results:'+JSON.stringify(results); str+=' fields:'+fields; console.log(str+'n'); if (error) { reject(error); }; resolve(results,fields); }) });
其他
由於我在koa 中使用 mysql, 我期望類似 同步的形式訪問資料庫。我的 MysqlDbHelper 類如下:
# 概述 # 安裝包 yarn add mysql # 導入 var mysql = require('mysql'var mysql = require('mysql'); var env = require('./env.js'); var fs = require("fs"); var path = require('path'); const option = { host : env.db_host, user : env.db_user, password : env.db_password, database : env.db_name, }; function querySync(db,sql,paraArray){ // console.log('para is'+JSON.stringify(paraArray)); let promise = new Promise((resolve, reject) => { let sql2 = mysql.format(sql, paraArray); console.log(` #sql: ${sql2}`); db.query(sql2,paraArray,(error, results, fields)=>{ let str =' #result:'; str+=' error:'+error; str+=' results:'+JSON.stringify(results); str+=' fields:'+fields; console.log(str+'n'); if (error) { reject(error); }; resolve(results,fields); }) }); return promise; } let MysqlDbHelper = { createConnection: function() { var connection = mysql.createConnection(option); connection.connect(); console.log(`打開資料庫成功`); return connection; }, querySync: function(sql,paraArray){ let connection = this.createConnection(); let pro = querySync(connection,sql,paraArray); pro.catch((err)=>{ console.error(' # on querySync: '+err); }).finally((some)=>{ // if(conn){ // // } }); connection.end(); return pro; } }; global.db = MysqlDbHelper; module.exports = MysqlDbHelper; ); # 創建 mysql 數據連接 var connection = mysql.createConnection(option); connection.connect(); console.log(`打開資料庫成功`); return connection; # 操作資料庫 let promise = new Promise((resolve, reject) => { let sql2 = mysql.format(sql, paraArray); console.log(` #sql: ${sql2}`); db.query(sql2,paraArray,(error, results, fields)=>{ let str =' #result:'; str+=' error:'+error; str+=' results:'+JSON.stringify(results); str+=' fields:'+fields; console.log(str+'n'); if (error) { reject(error); }; resolve(results,fields); }) });
參考
https://github.com/mapbox/node-sqlite3/wiki/API#databasegetsql-param–callback