node.js - TypeError:无法读取未定义的 Nodejs MSSQL 存储过程的属性“类型”
问题描述
我有一个这样的存储过程:
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)
TypeError:无法读取未定义的属性“类型”
编辑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)
}
})
解决方案
要解决这个问题,我需要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())
推荐阅读
- python - TypeError: 使用 pisa.Createpdf 时 -: 'str' 和 'int' 不支持的操作数类型
- android - Android:如何使用协程从互联网上读取文件?
- javascript - 为什么下一个以前的这个脚本不起作用?
- ios - 信息 plist 写入权限描述的问题,在构建时忽略
- swift - 为从 firebase 数据库读取的 swift 函数添加闭包
- angular - 可以使用 NgRx 存储在 Angular 2 中使用字符串参数调用 store.dispatch 方法
- vue.js - 在我的路线中使用 Vue'x getter 时“state.user 为空”
- c# - 如何使用 Fake It Easy 对假方法进行参数验证
- c - 如何在C中的函数内动态分配结构数组
- php - PHP - 一维数组中的所有排列,结果在数组中