Все примеры использования клиентского пакета / утомительного драйвера mssql предназначены для асинхронных / обратных вызовов / обещаний, но я только разрабатываю микросервис, который будет иметь ограниченное применение, и мое понимание асинхронных функций все еще немного нечетко.
Вот что я пытаюсь использовать async / await:
Класс генерации отчета:
const mssql = require('mssql');
const events = require('events');
class reporter {
constructor(searcher, logger) {
// Pass in search type and value or log the error of none defined
this.lg = logger
if (searcher.type && searcher.content) {
this.lg.lg("reporter created", 3)
this.srchType = searcher.type;
this.srchContent = searcher.content;
} else {
this.lg.lg("!MISSING SEARCH PARAMETERS", 0);
this.err = "!MISSING SEARCH PARAMETERS";
}
}
proc() {
//DB Connect async
async () => {
try {
await mssql.connect('mssql://username:password@localhost/database')
this.result = await mssql.query`select * from mytable where id = ${this.searcher}`
} catch (err) {
// ... error checks
}
}
return this.result;
}
}
Затем позвонил:
//Pass to reporter for resolution
var report1 = new reporter(searcher, logs);
report1.proc();
Я уверен, что это, вероятно, довольно плохой способ сделать это, поэтому я также открыт для любых предложений о хороших способах достижения конечной цели, но я все же хотел бы знать, возможно ли это сделать синхронно .