Я намеренно вызываю ошибку в хранимой процедуре при определенных условиях, которую я хочу перехватить в своем API Node.js, который использует пакет Tedious.
Фрагмент кода из API:
let request = new Request(sql, (err)=>{
if (err) {
sqlerr = err;
console.log(typeof(err));
console.log("**RQ-ERROR**", err);
}
});
В обратном вызове объекта «Запрос» выше есть параметр «err». "Typeof ()" возвращает "объект"; однако, когда я выкидываю его на консоль, это выглядит так:
**RQ-ERROR** { RequestError: Duplicate entry for specified period
at RequestError (C:\inetpub\wwwroot\PersonnelApps\kudosapi\node_modules\tedious\lib\errors.js:32:12)
at Parser.tokenStreamParser.on.token (C:\inetpub\wwwroot\PersonnelApps\kudosapi\node_modules\tedious\lib\connection.js:723:34)
at emitOne (events.js:96:13)
at Parser.emit (events.js:188:7)
at Parser.parser.on.token (C:\inetpub\wwwroot\PersonnelApps\kudosapi\node_modules\tedious\lib\token\token-stream-parser.js:27:14)
at emitOne (events.js:96:13)
at Parser.emit (events.js:188:7)
at addChunk (C:\inetpub\wwwroot\PersonnelApps\kudosapi\node_modules\readable-stream\lib\_stream_readable.js:297:12)
at readableAddChunk (C:\inetpub\wwwroot\PersonnelApps\kudosapi\node_modules\readable-stream\lib\_stream_readable.js:279:11)
at Parser.Readable.push (C:\inetpub\wwwroot\PersonnelApps\kudosapi\node_modules\readable-stream\lib\_stream_readable.js:240:10)
message: 'Duplicate entry for specified period',
code: 'EREQUEST',
number: 50000,
state: 1,
class: 16,
serverName: 'PERSODG2LNN52\\SQLEXPRESS',
procName: 'CreateStatusReport',
lineNumber: 44 }
Это почти похоже на объект JavaScript, но, как вы можете видеть, данные «RequestError» не заключены в кавычки, и нет запятой после текста «240: 10)» непосредственно перед элементом «message». Я не уверен, является ли это ошибкой в TDS или я просто что-то упускаю, но я не могу получить доступ ни к одному из участников, как есть. Мне пришлось бы преобразовать его в строку и разобрать, что хорошо, но не очень элегантно.
Предложения