此篇先將我運用到的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()才可以