node JS (雜)

此篇先將我運用到的nodeJS 紀錄下來,之後再來整理。

呼叫放在另一個.js的方法

hello.js (呼叫程式)

module.exports={
    LA : function(){
     var sayHI = "hello world";
     return sayHI;      
 }
}

Main.js (主程式)

var callMethod =require('./hello');
console.log(callMethod.LA());

在呼叫程式的js檔中,最重要的地方在於 module.exports = { } 他可以將JS任何型別的宣告,變成一個模組進行宣告。

在主程式中,我們必須去require() ,如同我們的import 概念。 ./ 則是代表這個目錄下的檔案,nodeJS 會預設後方為.js檔案,所以不需要特別寫出來。

值得注意的一點是 每個.js檔中,只能有一個 modul.exports ,若有兩個則會報錯。第二個方法可以利用 "," 來撰寫。

報作內容Ex:

module.exports={
    LA : function(){
     var sayHI = "hello world";
     return sayHI;      
    },

    SecMethod:function(){
       xxxx
    } 
}

JSON解析

在LINEBOT中,他本身已經轉換過所以直接使用,不需要解析。

event就是右邊這個JSON,請看因為source裡面又有userID type....等,因此我們必須寫event.source.userID

至於將JSON解析成JS物件,或是將物件序列化成 JSON 字串請參考下方

https://oawan.me/2016/javascript-json-stringify-and-parse/

接收http Get

因為需求必須去串接API去接收數據

test2.js

module.exports={
    httpRequest : function(sql){
        var http=require('http');  
        //get 请求外网  
            http.get("http://60.251.178.219:1147/Call_Server/QRY;"+sql,function(req,res){           
            var html='';  
            req.on('data',function(data){  
                html+=data;        
            });  
            req.on('end',function(){                
                //console.log(html);
                var replyData = JSON.parse(html);
                // console.log(replyData.result);  
                console.log(replyData.result[0]);
                // console.log();  
            });  
        });
    }
}

main.js

var httpReq = require('./test2');  
httpReq.httpRequest("select count(*) from users where userID='1108'");

Console

MySQL 連線

MySQL連線真的搞得我頭昏眼花,我依照網路上各種寫法去試試看,結果都給我一樣的問題

例如這樣的寫法

var mysql  = require('mysql');  
 
var connection = mysql.createConnection({     
  host     : 'localhost',       
  user     : 'root',              
  password : '123456',       
  port: '3306',                   
  database: 'test', 
}); 
 
connection.connect();

connection is not a function 

在一個巧合下總算試出來了。


1. 安裝 mysql  ==>    npm install mysql 

安裝完後再package.json 會有Mysql 的版本 我的是2.15.0

2.在js檔中,require mysql

var mysql  = require('mysql');

3.寫下你的連線內容

var config = {
  host     : 'IP',
  user     : 'user',
  password : 'pw',
  database : 'db',
  port:'port' //如果沒有則可以不需要寫
};

4.再來連接DB 並下 SQL ,這裡請注意。要使用 createPool

var pool = mysql.createPool(config);
pool.getConnection(function(err,connection){
    connection.query('SELECT 1 + 1 AS solution',function(err, results, fields){
    if(err){
        console.log('[SELECT ERROR] - ',err.message);
        return;
      }
      console.log('The solution is: ', results[0].solution);   
      connection.release();
   });
});

Console 

參考此篇(此篇釋放是利用connection.end() 但是我執行時,不知道是否版本不一樣。必須改寫成connection.release()才可以

https://cnodejs.org/topic/516b77e86d382773064266df