使用NodeJS和MSSQL程序包错误运行存储过程

Ada*_*olt 8 sql sql-server nodes node.js

我试图让MSSQL nodejs包使用下面的代码从Microsoft SQL服务器返回存储过程的结果.但是我得到的错误是......

[TypeError: Cannot read property 'type' of undefined]
Run Code Online (Sandbox Code Playgroud)

我不确定我是否已正确完成输入,因为我找不到在线任何地方输入多个输入的示例.

有任何想法吗?

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);
    });
}
Run Code Online (Sandbox Code Playgroud)

我使用"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)
    }

};
Run Code Online (Sandbox Code Playgroud)

sha*_*raj 10

我认为这条线

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);
Run Code Online (Sandbox Code Playgroud)

这看起来有点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();
Run Code Online (Sandbox Code Playgroud)

我自己尝试了这个并给出了结果.

  • 在4.x vs 3.x中,新的sql.Connection需要是新的sql.ConnectionPool,按照https://github.com/typeorm/typeorm/issues/387 (3认同)