Итак, простое объяснение того, что я делаю. Во-первых, я принимаю запрос GET от конечного пользователя. Во-вторых, я передаю (я сейчас делаю GET-запрос) параметр из запроса get в асинхронную функцию, которая возвращает адрес электронной почты пользователя на основе этого параметра (по сути, это тщеславный URL. «Боб» против «Роберт Ричардсон»).
В-третьих, я делаю еще один запрос GET ко второй системе, которая возвращает JSON-файл, содержащий различные подробности о пользователе.
Я знаю, что выноски работают нормально, потому что я могу запустить node index.js
с функцией, где я вручную передаю нужную мне информацию, и она возвращает желаемые результаты. Но когда я запускаю свой сервер nodejs и пытаюсь ответить на входящий запрос GET (я тестирую, определенно не живу), я получаю очень странные результаты ...
Вот что я сейчас пытаюсь заставить работать:
//server.js
const express = require ('express');
const bodyParser = require ('body-parser');
const app = express ();
постоянный порт = 8000;
app.use(bodyParser.urlencoded({
extended: true
}));
require('./app/routes')(app, {});
app.listen(port, () => {
console.log('test is listening on port :: ' + port);
});
//routes.js
const getdata = require('./getData '); //contains function for GET request one to convert param to email
async function getReturn(app, db) {
app.get('/getDataFrom/:alias', (req, res) => {
const alias = req.params.alias;
console.log('alias : ' + alias);
getEmailFromPromise(alias);
});
}
async function getEmailFromPromise(alias) {
console.log('getting email');
let output = await getEmail(alias);
console.log('output :: ' + output);
// return output;
}
function getEmail() {
return new Promise(resolve => {
let email = getdata.getUserInfo(alias);
resolve(email);
}, 1000);
}
Стоит отметить, что JS и Node - это не то, что я обычно кодирую, но мне нужно для проекта, с которым я помогаю. Я могу заставить работать простые примеры, но не мой, делающий запросы.
Передача в GET: localhost: 8000 / getDataFrom / bob
Вышесказанное возвращает следующее:
test is listening on port :: 8000
alias : rrichardson
getting email
output :: undefined //I am wanting this to log after I actually get the email
email found :: robert.richardson@company.com //I do get this back, but out of order. The undefined above should also be this
Другой файл, если он помогает (он правильно экспортируется):
//this is callout one getData
async function getUserInfo(alias){
client.connect();
client.query('select email, firstname, lastname from salesforce.user WHERE
alias = \''+ alias + '\'', (err, res) => {
if (err) console.log('err :: ' + err);
// console.log(res.rows);
client.end();
var email = res.rows[0].email;
if(email != null){
console.log('email found :: ' + email);
return email;
}
else return 'No Email Found';
});
}
Очевидно, я пропустил свои учетные данные, но последний файл js работает нормально, когда я передаю в него определенные данные. Опять же, просто проблемы при попытке ответить на GET-запрос, который поступает ко мне. Я был бы очень признателен за любую помощь в прояснении этого. Я почти уверен, что смогу выяснить второй запрос GET, если смогу получить помощь в выяснении этого первого.
Спасибо!