NodeJs mssql连接从.Request()

时间:2016-02-20 21:31:19

标签: node.js

我无法通过nmp的mssql包获得有效连接。

Here's a quick look at my code:

var sql = require('mssql');
var sqlConfig = {
    user: 'NodeUser',
    password: 'test',
    server: '10.211.55.3',
    database: 'NodeJs'
}
sql.connect(sqlConfig, function(err){
    if(err != null)
        console.log(err);

    console.log(sql);
});

这似乎很好,但是当我尝试使用它时(在路由类中):

var sql = require('mssql');

bookRouter.route('/')
    .get(function(req, res){
        var req = sql.Request();
        req.query('select * from books', function(err, recordset){
            console.log(recordset);
        });
        res.render('BookListView', {
            title: 'Hello from Books',
            nav: nav,
            books: books
        });
    });

我在req.query行上得到“TypeError:无法读取未定义的属性'查询'。这似乎是连接的问题?我能想到的唯一有用的东西是“console.log(sql);”的结果。上面一行:

{ connect: [Function],
  close: [Function],
  on: [Function],
  Connection: 
   { [Function: Connection]
     EventEmitter: 
      { [Function: EventEmitter]
        EventEmitter: [Circular],
        usingDomains: false,
        defaultMaxListeners: [Getter/Setter],
        init: [Function],
        listenerCount: [Function] },
     usingDomains: false,
     defaultMaxListeners: 10,
     init: [Function],
     listenerCount: [Function],
     __super__: 
      EventEmitter {
        domain: undefined,
        _events: undefined,
        _maxListeners: undefined,
        setMaxListeners: [Function: setMaxListeners],
        getMaxListeners: [Function: getMaxListeners],
        emit: [Function: emit],
        addListener: [Function: addListener],
        on: [Function: addListener],
        once: [Function: once],
        removeListener: [Function: removeListener],
        removeAllListeners: [Function: removeAllListeners],
        listeners: [Function: listeners],
        listenerCount: [Function: listenerCount] } },
  Transaction: 
   { [Function: Transaction]
     EventEmitter: 
      { [Function: EventEmitter]
        EventEmitter: [Circular],
        usingDomains: false,
        defaultMaxListeners: [Getter/Setter],
        init: [Function],
        listenerCount: [Function] },
     usingDomains: false,
     defaultMaxListeners: 10,
     init: [Function],
     listenerCount: [Function],
     __super__: 
      EventEmitter {
        domain: undefined,
        _events: undefined,
        _maxListeners: undefined,
        setMaxListeners: [Function: setMaxListeners],
        getMaxListeners: [Function: getMaxListeners],
        emit: [Function: emit],
        addListener: [Function: addListener],
        on: [Function: addListener],
        once: [Function: once],
        removeListener: [Function: removeListener],
        removeAllListeners: [Function: removeAllListeners],
        listeners: [Function: listeners],
        listenerCount: [Function: listenerCount] } },
  Request: 
   { [Function: Request]
     EventEmitter: 
      { [Function: EventEmitter]
        EventEmitter: [Circular],
        usingDomains: false,
        defaultMaxListeners: [Getter/Setter],
        init: [Function],
        listenerCount: [Function] },
     usingDomains: false,
     defaultMaxListeners: 10,
     init: [Function],
     listenerCount: [Function],
     __super__: 
      EventEmitter {
        domain: undefined,
        _events: undefined,
        _maxListeners: undefined,
        setMaxListeners: [Function: setMaxListeners],
        getMaxListeners: [Function: getMaxListeners],
        emit: [Function: emit],
        addListener: [Function: addListener],
        on: [Function: addListener],
        once: [Function: once],
        removeListener: [Function: removeListener],
        removeAllListeners: [Function: removeAllListeners],
        listeners: [Function: listeners],
        listenerCount: [Function: listenerCount] } },
  Table: { [Function: Table] fromRecordset: [Function] },
  PreparedStatement: 
   { [Function: PreparedStatement]
     EventEmitter: 
      { [Function: EventEmitter]
        EventEmitter: [Circular],
        usingDomains: false,
        defaultMaxListeners: [Getter/Setter],
        init: [Function],
        listenerCount: [Function] },
     usingDomains: false,
     defaultMaxListeners: 10,
     init: [Function],
     listenerCount: [Function],
     __super__: 
      EventEmitter {
        domain: undefined,
        _events: undefined,
        _maxListeners: undefined,
        setMaxListeners: [Function: setMaxListeners],
        getMaxListeners: [Function: getMaxListeners],
        emit: [Function: emit],
        addListener: [Function: addListener],
        on: [Function: addListener],
        once: [Function: once],
        removeListener: [Function: removeListener],
        removeAllListeners: [Function: removeAllListeners],
        listeners: [Function: listeners],
        listenerCount: [Function: listenerCount] } },
  ConnectionError: 
   { [Function: ConnectionError]
     captureStackTrace: [Function: captureStackTrace],
     stackTraceLimit: 10,
     prepareStackTrace: undefined,
     __super__: [Error] },
  TransactionError: 
   { [Function: TransactionError]
     captureStackTrace: [Function: captureStackTrace],
     stackTraceLimit: 10,
     prepareStackTrace: undefined,
     __super__: [Error] },
  RequestError: 
   { [Function: RequestError]
     captureStackTrace: [Function: captureStackTrace],
     stackTraceLimit: 10,
     prepareStackTrace: undefined,
     __super__: [Error] },
  PreparedStatementError: 
   { [Function: PreparedStatementError]
     captureStackTrace: [Function: captureStackTrace],
     stackTraceLimit: 10,
     prepareStackTrace: undefined,
     __super__: [Error] },
  ISOLATION_LEVEL: 
   { READ_UNCOMMITTED: 1,
     READ_COMMITTED: 2,
     REPEATABLE_READ: 3,
     SERIALIZABLE: 4,
     SNAPSHOT: 5 },
  DRIVERS: [ 'msnodesql', 'tedious', 'tds', 'msnodesqlv8' ],
  TYPES: 
   { VarChar: [sql.VarChar],
     NVarChar: [sql.NVarChar],
     Text: [sql.Text],
     Int: [sql.Int],
     BigInt: [sql.BigInt],
     TinyInt: [sql.TinyInt],
     SmallInt: [sql.SmallInt],
     Bit: [sql.Bit],
     Float: [sql.Float],
     Numeric: [sql.Numeric],
     Decimal: [sql.Decimal],
     Real: [sql.Real],
     Date: [sql.Date],
     DateTime: [sql.DateTime],
     DateTime2: [sql.DateTime2],
     DateTimeOffset: [sql.DateTimeOffset],
     SmallDateTime: [sql.SmallDateTime],
     Time: [sql.Time],
     UniqueIdentifier: [sql.UniqueIdentifier],
     SmallMoney: [sql.SmallMoney],
     Money: [sql.Money],
     Binary: [sql.Binary],
     VarBinary: [sql.VarBinary],
     Image: [sql.Image],
     Xml: [sql.Xml],
     Char: [sql.Char],
     NChar: [sql.NChar],
     NText: [sql.NText],
     TVP: [sql.TVP],
     UDT: [sql.UDT],
     Geography: [sql.Geography],
     Geometry: [sql.Geometry],
     Variant: [sql.Variant] },
  MAX: 65535,
  map: 
   [ { js: [Function: String], sql: [sql.NVarChar] },
     { js: [Function: Number], sql: [sql.Int] },
     { js: [Function: Boolean], sql: [sql.Bit] },
     { js: [Function: Date], sql: [sql.DateTime] },
     { js: [Object], sql: [sql.VarBinary] },
     { js: [Object], sql: [sql.TVP] },
     register: [Function] ],
  fix: true,
  Promise: [Function: Promise],
  VarChar: [sql.VarChar],
  VARCHAR: [sql.VarChar],
  NVarChar: [sql.NVarChar],
  NVARCHAR: [sql.NVarChar],
  Text: [sql.Text],
  TEXT: [sql.Text],
  Int: [sql.Int],
  INT: [sql.Int],
  BigInt: [sql.BigInt],
  BIGINT: [sql.BigInt],
  TinyInt: [sql.TinyInt],
  TINYINT: [sql.TinyInt],
  SmallInt: [sql.SmallInt],
  SMALLINT: [sql.SmallInt],
  Bit: [sql.Bit],
  BIT: [sql.Bit],
  Float: [sql.Float],
  FLOAT: [sql.Float],
  Numeric: [sql.Numeric],
  NUMERIC: [sql.Numeric],
  Decimal: [sql.Decimal],
  DECIMAL: [sql.Decimal],
  Real: [sql.Real],
  REAL: [sql.Real],
  Date: [sql.Date],
  DATE: [sql.Date],
  DateTime: [sql.DateTime],
  DATETIME: [sql.DateTime],
  DateTime2: [sql.DateTime2],
  DATETIME2: [sql.DateTime2],
  DateTimeOffset: [sql.DateTimeOffset],
  DATETIMEOFFSET: [sql.DateTimeOffset],
  SmallDateTime: [sql.SmallDateTime],
  SMALLDATETIME: [sql.SmallDateTime],
  Time: [sql.Time],
  TIME: [sql.Time],
  UniqueIdentifier: [sql.UniqueIdentifier],
  UNIQUEIDENTIFIER: [sql.UniqueIdentifier],
  SmallMoney: [sql.SmallMoney],
  SMALLMONEY: [sql.SmallMoney],
  Money: [sql.Money],
  MONEY: [sql.Money],
  Binary: [sql.Binary],
  BINARY: [sql.Binary],
  VarBinary: [sql.VarBinary],
  VARBINARY: [sql.VarBinary],
  Image: [sql.Image],
  IMAGE: [sql.Image],
  Xml: [sql.Xml],
  XML: [sql.Xml],
  Char: [sql.Char],
  CHAR: [sql.Char],
  NChar: [sql.NChar],
  NCHAR: [sql.NChar],
  NText: [sql.NText],
  NTEXT: [sql.NText],
  TVP: [sql.TVP],
  UDT: [sql.UDT],
  Geography: [sql.Geography],
  GEOGRAPHY: [sql.Geography],
  Geometry: [sql.Geometry],
  GEOMETRY: [sql.Geometry],
  Variant: [sql.Variant],
  VARIANT: [sql.Variant],
  pool: { max: 10, min: 0, idleTimeoutMillis: 30000 },
  connection: { userName: '', password: '', server: '' },
  init: [Function] }

我不禁注意到这里缺少凭据。有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

看起来像异步问题,请尝试直接在请求上执行此操作,例如mssql npm example

var sql = require('mssql');

bookRouter.route('/')
    .get(function(req, res){
        sql.Request().query('select * from books')
          .then(function(recordset){
            console.log(recordset);
            res.render('BookListView', {
              title: 'Hello from Books',
              nav: nav,
              books: books
            });
        }).catch(function(err){
          // some error handling
        });
    });