복붙노트

[SQL] NodeJS와 MSSQL 패키지 오류가있는 저장 프로 시저를 실행

SQL

NodeJS와 MSSQL 패키지 오류가있는 저장 프로 시저를 실행

필자는 아래의 코드를 사용하여 Microsoft SQL 서버에서 저장 프로 시저의 결과를 반환하는 MSSQL nodejs 패키지를 얻을하려고합니다. 그러나 내가 오류입니다 ...

[TypeError: Cannot read property 'type' of undefined]

난 아무데도 온라인으로 하나 개 이상의 입력이 예를 찾을 수 없습니다 나는 확실히 내가 올바르게 입력했을 아니에요.

어떤 아이디어?

exports.executeSqlStoredProd = function (callback) {
    var conn = new sqlDb.Connection(settings.dbConfig)
    conn.connect().then(function () { 
        var req = new sqlDb.Request(conn);
        req.input('ProductEntryID', req.Int, 3299);
        req.input('LoginEntryID', req.Int, 4);
        req.input('TempLoginEntryId', req.Int, -1);
        req.input('AddToWishList', req.Bit, 0);
        req.input('WebPortalId', req.Int, 0);
        req.execute('J_ViewAProduct').then(function(err, recordsets) {
        console.log(recordsets);
        callback(recordsets)
    })}).catch(function(err){ 
        console.log(err);
        callback(null, err);
    });
}

나는 성공적 패키지 "연속적인"을 사용하지만 사용 MSSQL에 선호 요청을했다. "연속적인"근무 코드는 다음과 같습니다.

exports.getVAP = function(req, resp, pid) {  
    sql.execute({
        procedure: "J_ViewAProduct",
        params: {
            ProductEntryID: {
                type: sql.INT,
                val: pid
            },
            LoginEntryID: {
                type: sql.Int,
                val: 4
            },
            TempLoginEntryId: {
                type: sql.Int,
                val: -1
            },
            AddToWishList: {
                type: sql.Bit,
                val: 0
            },
            WebPortalId: {
                type: sql.Int,
                val: 0
            }
        }
    }).then(function(results){
        console.log(results)
        httpMsgs.sendJSON(req, resp, results)
        //httpMsgs.sendJSON(req, resp, results[0])
        resp.end();
    }), function(err){
        httpMsgs.show500(req, resp, err)
    }

};

해결법

  1. ==============================

    1.나는 라인의 생각

    나는 라인의 생각

    req.input('ProductEntryID', req.Int, 3299);
    req.input('LoginEntryID', req.Int, 4);
    req.input('TempLoginEntryId', req.Int, -1);
    req.input('AddToWishList', req.Bit, 0);
    req.input('WebPortalId', req.Int, 0);
    

    이는 보인다 그게 잘못된 req.input 있습니다.

    이 코드를 시도하십시오

    var sql = require('mssql');
    
    var config = {
        user: 'sa',
        password: '---',
        server: 'localhost', // You can use 'localhost\\instance' to connect to named instance
        database: 'Test'
    }
    
    var getCities = function() {
      var conn = new sql.Connection(config);
      conn.connect().then(function(conn) {
        var request = new sql.Request(conn);
        request.input('City', sql.VarChar(30), 'Cbe');
        request.input('NameNew', sql.VarChar(30), 'Cbe');
        request.execute('spTest').then(function(err, recordsets, returnValue, affected) {
          console.dir(recordsets);
          console.dir(err);
        }).catch(function(err) {
          console.log(err);
        });
      });
    }
    
    getCities();
    

    나는이 나 자신과 그 결과를주는 시도했다.

  2. ==============================

    2.이 도움 여부 될 나도 몰라하지만 내가 한 방법이다

    이 도움 여부 될 나도 몰라하지만 내가 한 방법이다

    let executeQuery = async (value, country) => {
        try {
            let pool = await sql.connect(dbConfig);
            let results = await pool.request()
                .input('input_parameter', sql.Int, value)
                .input('Country', sql.VarChar(50), country)
                // .output('output_parameter', sql.VarChar(50))
                .execute('procedure_name')
    
            console.dir(results);
    
        } catch (err) {
            res.json({
                "error": true,
                "message": "Error executing query"
            })
        }
    }
    
    executeQuery(value, country);
    

    나는 더 읽을 수 있도록 비동기 및 await를 방법을 사용했습니다.

  3. from https://stackoverflow.com/questions/38909920/running-a-stored-procedure-with-nodejs-and-mssql-package-error by cc-by-sa and MIT license