У меня есть приложение nodeJS с использованием драйвера mssql
для взаимодействия с моей базой данных SQL. Я хочу иметь одну функцию для получения значения из базы данных, однако при первом использовании таблица не будет существовать, поэтому, если есть определенная ошибка, я хочу вызвать функцию createValue()
. Ниже приведен код, но я должен его дважды вызвать, чтобы получить значение. В принципе, если выполнено условие в .catch
, я хотел бы снова позвонить Request
. Есть ли опрятный способ сделать это?Retise Promise при ошибке - Typcript
var value;
new sql.Request().query('select * from _table')
.then(function (recordset) {
value = recordset;
})
.catch(function (err) {
console.log("Query Error: " + err);
if (err.message == "Invalid object name '_table") {
createValue();
}
})
Update:
теперь у меня есть следующие функции, но как я должен лучше получить его, чтобы вернуть recordset
?
function getData() {
sql.connect("mssql://username:[email protected]/mytestdatabase").then(function() {
return new sql.Request().query('select * from _table')
.then(function (recordset) {
console.log(recordset); // <-- THIS IS WHAT I WANT TO RETURN
})
.catch(function (err) {
console.log("Query Error: " + err);
if (err.message == "Invalid object name '_table") {
updateValue();
return getData();
}
return null;
})
}).catch(function (err) {
console.log("Connection Error: " + err);
})
};
Мне нужно повторить обещания, поэтому я посмотрел, что там было, а затем обнаружил, что для TypeScript ничего действительно не существует, поэтому я откатился сам. Обратная связь приветствуется. https://www.npmjs.com/package/retry-promise-typescript –