2016-08-12 21 views
0

以下のコードを使用して、ストアド・プロシージャの結果をMicrosoft SQL Serverから返すようにMSSQL nodejsパッケージを取得しようとしています。しかし、私が得るエラーは...NodeJSおよびMSSQLパッケージ・エラーでストアド・プロシージャを実行する

[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); 
    }); 
} 

"Seriate"パッケージを使用して正常にリクエストしましたが、mssqlを使用することをお勧めします。 "Seriate"のコードは次のとおりです。

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) 
    } 

}; 

答えて

2

私はreq.inputを持っているラインの

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); 

は、それはそう間違ってthatsのだと思います。

このコード

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(); 

を試してみてください私は自分自身とその結果を与え、これを試してみました。

+0

ありがとうございました!何らかの理由でreqを置いていましたが、mssqlを含む変数がmssqlと呼ばれていましたので、mssqlにreqを修正しました:) – Adam91Holt

+0

Fine Thanks。 :) – shanmugharaj

+0

4.xと3.xでは、新しいsql.Connectionは、https://github.com/typeorm/typeorm/issues/387のように新しいsql.ConnectionPoolである必要があります。 – NealWalters

関連する問題