2016-08-12 57 views
0

我試圖讓MSSQL nodejs包使用下面的代碼從Microsoft SQL服務器返回存儲過程的結果。不過,我得到的是錯誤...使用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); 

這就是錯了,它似乎。

請試試這個代碼

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,因此更新了req到mssql修復了它:) – Adam91Holt

+0

非常感謝。我很高興,在某種程度上,這有助於:) – shanmugharaj

+0

在4.x和3.x中,新的sql.Connection需要根據新的sql.ConnectionPool https://github.com/typeorm/typeorm/issues/387 – NealWalters