Node.js WebAPI部署至IIS后出现connection.queryRaw is not a function错误求助
问题描述
我是Node.js新手,正在使用Node.js和MSSQL数据库开发WebAPI。开发环境下通过npm run start启动服务器时,POST接口能正常返回响应,但将API部署到Windows IIS后,出现connection.queryRaw is not a function错误。
路由代码
router.post('/',async (req,res,next)=>{ // console.log('Enter products creation') const Product = Array.from(req.body) // req.body // console.log('New Product details passed on',Product) const createProd = require('../CreateProduct') const response = await createProd(Product) res.status(404).json({ message : response.retStatus }) })
CreateProduct函数代码
const sql = require("mssql/msnodesqlv8"); const dataAccess = require("../DataAccess"); const fn_CreateProd = async function (product) { let errmsg = ""; let objBlankTableStru = {}; let connPool = null; // console.log('Going to connect with Connstr:',global.config) await sql .connect(global.config) .then((pool) => { global.connPool = pool; productsStru = pool.request().query("DECLARE @tblProds tvp_products select * from @tblProds"); return productsStru; }) .then(productsStru=>{ objBlankTableStru.products = productsStru productsOhStru = global.connPool.request().query("DECLARE @tblprodsOh tvp_product_oh select * from @tblprodsOh"); return productsOhStru }) .then((productsOhStru) => { objBlankTableStru.products_oh = productsOhStru let objTvpArr = [ { uploadTableStru: objBlankTableStru, }, { tableName : "products", tvpName: "tvp_products", tvpPara: "tblProds" }, { tableName : "products_oh", tvpName: "tvp_product_oh", tvpPara: "tblProdsOh", } ]; newResult = dataAccess.getPostResult( objTvpArr, "sp3s_ins_products_tvp", product ); console.log("New Result of Execute Final procedure", newResult); return newResult; }) .then((result) => { // console.log("Result of proc", result); if (!result.recordset[0].errmsg) errmsg = "New Products Inserted successfully"; else errmsg = result.recordset[0].errmsg; }) .catch((err) => { console.log("Enter catch of Posting prod", err.message); errmsg = err.message; if (errmsg == "") { errmsg = "Unknown error from Server... "; } }) .finally((resp) => { sql.close(); }); return { retStatus: errmsg }; }; module.exports = fn_CreateProd;
getPostResult函数代码
const getPostResult = ( tvpNamesArr, procName, sourceData, sourceDataFormat, singleTableData ) => { let arrtvpNamesPara = []; let prdTable = null; let newSrcData = []; // console.log("Source Data :", sourceData); let uploadTable = tvpNamesArr[0]; for (i = 1; i <= tvpNamesArr.length - 1; i++) { let tvpName = tvpNamesArr[i].tvpName; let tvpNamePara = tvpNamesArr[i].tvpPara; let TableName = tvpNamesArr[i].tableName; let srcTable = uploadTable.uploadTableStru[TableName]; srcTable = srcTable.recordset.toTable(tvpName); let newsrcTable = Array.from(srcTable.columns); newsrcTable = newsrcTable.map((i) => { i.name = i.name.toUpperCase(); return i; }); if (!singleTableData) { switch (sourceDataFormat) { case 1: newSrcData = sourceData.filter((obj) => { return obj.tablename.toUpperCase() === TableName.toUpperCase(); }); break; case 2: newSrcData = getObjectDatabyKey(sourceData, TableName); break; default: newSrcData = getTableDatabyKey(sourceData, TableName); break; } } else { newSrcData = sourceData; } // console.log(`Filtered Source data for Table:${TableName}`, newSrcData); prdTable = generateTable( newsrcTable, newSrcData, tvpName, sourceDataFormat ); arrtvpNamesPara.push({ name: tvpNamePara, value: prdTable }); } const newResult = execute(procName, arrtvpNamesPara); return newResult; };
内容的提问来源于stack exchange,提问作者Sanjay Bhatia
相关产品推荐
相关产品推荐

