我正在使用Express.js和msnodesqlv8运行语句。
捕获的错误具有正确的元素,可以冒泡到控制器,但对于 Error 部分,该错误不能正确传播。
返回的错误如下:
{错误:[Microsoft] [SQL Server Native Client 11.0] [SQL Server] INSERT语句与CHECK约束冲突 “ MyConstraint”。发生冲突 数据库“ Mydatabase”,表“ dbo.MyTable”。 sqlstate:“ 23000”,代码:547}
但是状态代码为500的返回给控制器的错误没有被正确使用,并且我只能访问sqlstate和代码。这是因为来自SQL Server的错误消息未正确格式化以进行解析吗?
如何检索消息的错误部分?
var sql = require('msnodesqlv8');
app.get('/myroute/*', function (req, res) {
var queryData = url.parse(req.url, true).query;
var param1= queryData.param1;
res.header("Access-Control-Allow-Origin", allowOriginUrl)
let txtFile = "myFile.sql"
let query = fs.readFileSync(txtFile,'utf8');
query = query.replace('?param1',param1)
sql.query(regroupement_conn, query, (err, rows) => {
if(err)
{
//throw err;
console.log(err)
result = res.status(500).send({
message : err
})
}
else
{
result = res.send(rows);
}
});
})
我正在消耗控制器中的错误
return this.http.get<any>(`${environment.apiUrl}/myroute/` ,{params}).pipe(
catchError((err) => {
throw err;
})
)