Ошибка типа: не удается прочитать свойство 'тип' из неопределенного Nodejs MS SQL Хранимая процедура - PullRequest
0 голосов
/ 05 марта 2020

У меня есть хранимая процедура, подобная этой:

CREATE PROCEDURE [dbo].[st_addStudent] 
    @StudentID int, 
    @StudentName varchar(50), 
    @TimeStamp datetime, 
    @Notes varchar(MAX) 
AS 
BEGIN 
    INSERT INTO Students (StudentID , StudentName , [TimeStamp], Notes) 
    VALUES (@StudentID , @StudentName , @TimeStamp, @Notes); 
END

Я пытаюсь запустить хранимую процедуру, выполнив:

rows = await pool
        let db = await rows
        let request = db.request()
        request.input('StudentID ',request.Int,12)
        request.input('StudentName ',request.VarChar(50),34)
        request.input('TimeStamp',request.DateTime,new Date())
        request.input('Notes',request.VarChar,'TEST')

        request.execute('st_addStudent')

Я получаю сообщение об ошибке из строки:

request.input('StudentID ',request.Int,12)

Ошибка типа: невозможно прочитать свойство 'тип' из неопределенного

Изменить 1:

Настройка модуля базы данных:

const sql = require('mssql/msnodesqlv8');
const util = require("util")


//Need this package for windows authentication
require('msnodesqlv8');





const config = {
        user: 'UserName',
        password: 'Password',
        server: 'Sever23', // You can use 'localhost\\instance' to connect to named instance
        database: 'Student_DEV',
        // driver:'msnodesqlv8',
        pool: {
            max: 10,
            min: 5,
            idleTimeoutMillis: 30000
        },
        options:{
            encrypt:false,
            instanceName:'STUDENT'
        },
        //  port:57909,
        enableArithAbort:false  
}

let connection = new sql.ConnectionPool(config).connect()
  .then(query => { return query } )
  .catch(e => console.error("Database Trouble!  ", e))



module.exports = connection;

На моем пути у меня

const express = require("express");
const router = express.Router();
const pool = require('../middleware/database')

router.post("/alterStudent",async (req,res)=>{
   try{
        rows = await pool
        let db = await rows
        let request = db.request()
        request.input('StudentID ',request.Int,12)
        request.input('StudentName ',request.VarChar(50),34)
        request.input('TimeStamp',request.DateTime,new Date())
        request.input('Notes',request.VarChar,'TEST')

        request.execute('st_addStudent')


   }
   catch(err){
     console.log(err)
  }

})

1 Ответ

0 голосов
/ 06 марта 2020

Чтобы это исправить, мне нужно загрузить mssql lib в моем маршруте

const sql = require('mssql')

и изменить свой запрос на что-то вроде:

let db = await pool
 let request = db.request()
             .input('UserID',sql.VarChar(50),34)
             .input('TimeStamp',sql.DateTime,new Date())
...