Есть несколько проблем с вашим кодом.На первую проблему уже указали другие пользователи, вам нужно вернуть обещание от rsProdRecs
.Блоки then
и catch
также проблематичны, так же как и то, как вы используете метод в своем маршруте, как описано в коде ниже:
module.exports = {
rsProdRecs: (req, res) => {
return rsClient.query(query.one);
// This is redundant, you're not transforming res in any way so this can be omitted.
// .then(res => {
// return res;
// })
// This will cause the promise to return 'undefined' if rsClient.query(...) rejects,
// instead error handling should be done in the calling function.
// .catch(err => console.log(err));
}
};
И вы можете реорганизовать свой маршрут для правильного потребленияВаш Promise
метод возврата:
router.get('/', function (req, res, next) {
// We cannot consume the "data" directly, we must wait for the promise to resolve.
queries.rsProdRecs()
.then((data) => {
console.log(data);
res.send(data);
})
.catch((err) => {
console.log(err);
res.status(500); // insert correct error response here
});
});
Или используйте async/await
, поскольку вы уже используете функциональность ES6:
router.get('/', async function (req, res, next) {
try {
const data = await queries.rsProdRecs();
console.log(data);
res.send(data);
} catch (e) {
console.log(err);
res.status(500);
}
});