Azure Functions에서 SQLServer에 연결 (node.js)

전제



· 빈 AzureFunctions 함수가 있습니다.
· 어딘가에 SQLServer가 있습니다.

SQL 연결에는 tedious 드라이버를 사용합니다.
htps //w w. 음 pmjs. 코 m / Pac 가게 / Tea s s

서둘러, 타인에게 전할 필요가 있었으므로, 순서를 메모 정도로.

아래에서는 tedious의 azurefunctions에 설치 절차와 샘플 코드를 사용하여 연결을 확인합니다.

절차


  • azure 포털의 플랫폼 기능 메뉴에서 콘솔을 시작합니다.
  • >cd HttpTriggerJS1
    HttpTriggerJS1>npm init -y
    HttpTriggerJS1>npm install tedious --save
    
    
  • 적절한 코드를 추가한다.

  • 이 예에서는, index.js의 선두에, 이하에서도 추가해 본다.
    phonebook이라는 테이블이 xxxx.database.windows.net의 dddd라는 데이터베이스에 있다고 가정합니다.
    데이터베이스 사용자는 ID/Password가 uuuu/pppp로 한다.
    var Connection = require('tedious').Connection;
    var TedRequest = require('tedious').Request;
    var TYPES = require('tedious').TYPES;  
    
    function scan_table(context, q_name){
    
       //データベース接続情報
        var config = {  
            userName: 'uuuu',  
            password: 'pppp',  
            server: 'xxxx.database.windows.net',   
            options: {
              encrypt:  true, 
              database: 'dddd'
            }  
        };
    
        //SQLは、一応、prepared statementにする。
        var query = "SELECT [familyname], [mobilenumber] "+
            "FROM [dbo].[phonebook] "+
            "WHERE [familyname] = @WHO";
    
        //CreateConnection
        var connection = new Connection(config);
    
        //接続
        connection.on('connect', function(err) {  
            if(err){
                //Error Handling
            } else {  
                // SQL実行
                results = executeStatement(query, obj);
            }
        });
    
        connection.on('end', function(err){
            console.log("connection End");
        });
    
        //SQL実行の実体
        function executeStatement(query) { 
    
            //応答を詰め込むバッファ
            var arr = [];
            var con_cnt = 2; //取得する列数
    
            console.log("executeStatement start"); 
            queryrequest = new TedRequest(query, function(err){
                if (err) {
                    console.log(err);
                } else {
                    //応答を返す場所。
                    //arrをいい感じに処理する。
                    context.log(arr[0][0]+arr[0][1]);
                }
            });
    
            //検索条件の指定
            queryrequest.addParameter('WHO', TYPES.NVarChar, q_name);
    
            queryrequest.on('row', function(columns) {  
                //見つかった。
                var record = new Array(con_cnt);
                var i = 0;
                columns.forEach( function(column) {
                    record[i++] = column.value;
                });
                arr.push(record);
            });
    
            queryrequest.on('requestCompleted', function(rowCount, more){
                connection.close();
            });
    
            connection.execSql(queryrequest);
    
            return;
        }
    }
    
    

    index.js에서 뛰어 넘어보십시오.
    
    module.exports = function (context, req) {
        context.log('JavaScript HTTP trigger function processed a request.');
    
        if (req.query.name || (req.body && req.body.name)) {
            context.res = {
                // status: 200, /* Defaults to 200 */
                body: "Hello " + (req.query.name || req.body.name)
            };
    
            //データベースアクセスと応答
            scan_table(context, req.query.name);
    
        }
        else {
            context.res = {
                status: 400,
                body: "Please pass a name on the query string or in the request body"
            };
        }
        context.done();
    };
    
    

    움직여 본다.





    azure 포털의 「실행 버튼」옆의 「함수의 URL의 취득」에서 꺼낸 URL에 대해서, 다른 브라우저로부터, ?name=xxx를 붙여, Functions를 호출해 본다. xxx는 SQL의 WHERE 절입니다.

    azure 포털에서는 함수 화면을 계속 표시합니다.
    그러면 azure 포털의 로그 화면에 결과가 나올 것입니다.

    좋은 웹페이지 즐겨찾기