iT邦幫忙

0

關於使用Node.js連結line bot以及MSSQL

首先附上程式碼中一段↓,由於整體太長我並沒有全貼,只有貼主要我需要跑的一段。

bot.on('message', function(event) {
   var myReply='';
   if (event.message.text === '查詢') { 
		var sql = require("mssql");
		// config for your database
		var config = {
			user:'sa',
			password:'我的密碼',
			server:'127.0.0.1',
			port:'1433',
			dialect:'mssql',
			database:'test1',
			options: {
				 truestedConnection: true,
				 instanceName:'MSSQLSERVER'
			}
		};
		// connect to your database
		sql.connect(config, function (err) {
			if (err) console.log(err);
			// create Request object
			var request = new sql.Request();
			// query to the database and get the records
			request.query('select * from student', function (err, recordset) {	
				if (err) console.log(err)
				// send records as a response
				console.log(recordset);
				sql.close()
			});
		});
   }
  if (event.message.type === 'sticker') {
      myReply='你很幽默噢!!';
   }
   if (event.message.type === 'image') {
      myReply='這照片好帥!';
   }
   event.reply(myReply).then(function(data) {
      // success 
      console.log('訊息已傳送!');
   }).catch(function(error) {
      // error 
      console.log('error');
   });
});

希望是我在Line上打"查詢",後臺就可以到資料庫(Student)抓我需要的資訊並回覆出來。

然後是push到heroku後得到的回應↓。

{ ConnectionError: Failed to connect to 127.0.0.1\MSSQLSERVER in 15000ms
...(中間省略)
2018-12-11T08:08:17.162161+00:00 app[web.1]:     at process._tickCallback (internal/process/next_tick.js:68:7) code: 'ECONNCLOSED', name: 'ConnectionError' }
2018-12-11T08:08:17.162306+00:00 app[web.1]: undefined

我有使用過sql client去做外部連接,是沒有問題的(確定可以連上)
https://ithelp.ithome.com.tw/upload/images/20181211/20113788MlSbtCs6jl.jpg

然後單獨的把var sql = require("mssql"); 到 sql.close() 這一段抓出來用CMD執行結果如下:
https://ithelp.ithome.com.tw/upload/images/20181211/20113788Q6jM3pudSY.jpg

MSSQL裡頭的TCP/IP(Port:1433)以及SQL Server Browser都開了。

請求協助,我不知道還有哪邊沒調整到或是程式碼哪邊有問題。
拜託了,謝謝!

watercool iT邦新手 5 級 ‧ 2018-12-12 09:14:14 檢舉
127.0.0.1不是localhost嗎?你的heroku有裝mssql?
請問watercool所提的heroku裝mssql是指...? 麻煩您了,謝謝。
watercool iT邦新手 5 級 ‧ 2018-12-14 10:53:54 檢舉
我去heroku的marketplace找沒有看到mssql相關的plugin,搜尋結果如下:
https://elements.heroku.com/search/addons?q=mssql
所以我才會假設你的hroku沒有安裝mssql

再來就是127.0.0.1是內部ip,也就是所謂的localhost,你所謂外部連接的圖片,主機IP那邊一樣是127.0.0.1,這樣感覺你還是從你電腦連你電腦的mssql,你外部連接是拿同一台電腦做測試嗎?你在你電腦本地端怎麼測試都是可以連上的。

如果你是希望app從heroku連回你的電腦讀取mssql,那你的config檔就要給他一個外部IP而不是127.0.0.1,不過如果這樣,那我會建議連app都自己host就好了。如果非要雲端的伺服器可以考慮Azure,他有MSSql相關的解決方案,如果沒有一定要求要MSSQL那就可以改用heroku有支援的PostgreSql/Mysql/Maria。

以上,希望沒有答非所問

尚未有邦友回答

立即登入回答