我正在尝试通过node-mssql包执行在SQL Server中开发的存储过程。对于服务器端,我使用ExpressJS,而客户端是使用Angular开发的。
我的问题是:node-mssql
执行存储过程没有任何问题,并返回否。受影响的行数。但是在客户端,在控制台中,我得到的错误为OK,但是响应状态为200。由于此错误,页面无法重定向到下一页。有人能帮我解释一下吗?我不知道我在哪里错过。
我尝试使用req.query
方法将数据作为普通查询(没有存储过程)插入数据库。它在服务器端和客户端都可以正常工作。我相信仅对req.execute
执行存储过程才响应该错误消息。我更喜欢使用存储过程而不是普通的SQL命令将数据插入表中。
客户端Http POST请求:
createFlexiClaim(userid: any,claimClass: any,flexiClaim): Observable<void> {
return this.http.post<void>(DBServerUtil.Uri + DBServerUtil.port + '/create/' + claimClass + '/' + userid,flexiClaim,{
headers: new HttpHeaders({
'content-Type': 'application/json; charset=utf-8'
})
}
)
.pipe(catchError(this.handleError));
}
}
ExpressJS POST请求:
app.post('/create/:claimClass/:userid',function (req,res) {
// (sqlqry,ClaimWBS,Docdate,typeclaim,curr,AMT,typec,empid,empname,claimfor,forrela,callback)
// console.log(req.body.projectWbs + " : " + req.body.docDate + " : " + req.body.typeOfClaim + " : " + req.body.currencyKey + " : " + req.body.amount + " : " + req.params.claimClass + " : " + req.params.userid + " : " + req.params.userid + " : " + ":" + req.params.claimClass + " : " + req.params.userid)
queryExe.CreateclaimPromise('CREATeclAIMDTL',req.body.projectWbs,req.body.docDate,req.body.typeOfClaim,req.body.currencyKey,req.body.amount,req.params.claimClass,req.params.userid,'',function (recordRet,err) {
if (err) {
res.send("Error from app.js : "+err)
} else {
console.log("Message from app.js : "+recordRet)
res.send("Message from app.js : "+JSON.stringify(recordRet))
}
})
})
node-mssql
连接请求:
sql.connect(setting.dbconfig).then(pool => {
return pool.request()
.input('PROJWBS',sql.VarChar(10),ClaimWBS)
.input('DOCUMENTDATE',sql.Date,Docdate)
.input('TYPEOFSUBCLAIM',sql.Int,typeclaim)
.input('CURRENCY',sql.VarChar(5),curr)
.input('AMOUNT',sql.Money,AMT)
.input('CLAIMTYPE',typec)
.input('EMPLOYEEID',sql.VarChar(50),empid)
.input('EMPLOYEENAME',sql.VarChar(150),empname)
.input('CLAIMFOR',claimfor)
.input('RELATIONSHIP',forrela)
.execute(sqlqry)
}).then(result => {
// console.dir(result.recordset)
callback(result.rowsAffected)
sql.close()
}).catch(err => {
// console.log(err)
callback(err)
sql.close()
})
我需要帮助来理解和帮助我,为什么当状态代码为200并且服务器达到最佳状态时会出现此错误。