Выполните асинхронный вызов компонента Vue на сервер NodeJs и дождитесь ответа - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь сделать следующее: у меня есть сервер, на котором запущен Vue.js.После «npm run dev» приложение отображается на localhost: 8080.Теперь, после того, как все построено, выполняется этот фрагмент кода в компоненте: (у меня сервер NodeJs работает на порту 3000)

HelloWorld.Vue

mounted () {  
  axios.get('http://localhost:3000/')
    .then((response) => {
    console.log(response.data);
    this.User = response.data;
  })
  .catch((error) => {
    console.log(error);
  });  

}

Что в основном будет запрашивать сервер NodeJS для выполнения запроса к базе данных Post Gres.

Server.Js

 app.get('/', function (req, res) {
    return res.send(connectBD());
});

function connectBD(){ 

    res =  client.query("Select * from entidademeio");

    res.rows.forEach(row=>{
        console.log(row);
        tmp = JSON.stringify(row['nomeentidade']) + "";
        queryResult += tmp;         //Imprime as rows da b
    });
    client.end();
    return queryResult;
}

Но я получаю эту ошибку со стороны Vue:

Request failed with status code 500
at createError (createError.js?16d0:16)
at settle (settle.js?db52:18)
at XMLHttpRequest.handleLoad (xhr.js?ec6c:77)

Однакоесли я возвращаю строку:

Server.Js

app.get('/', function (req, res) {
     return res.send("bla");
});

, она отображается так, как я хотел в консоли на Vue Side.Может кто-нибудь, пожалуйста, предоставьте мне решение и некоторые фрагменты кода. Я хочу, чтобы результат запроса отображался на консоли из Vue Side.Спасибо

РЕДАКТИРОВАТЬ:

Если я изменю свой ConnectBD () на:

async function connectBD(){ 
var conString = "postgres://**********************";
var client = new pg.Client(conString);
var result;
await client.connect();

res = await client.query("Select * from entidademeio");

res.rows.forEach(row=>{
    console.log(row);
    tmp = JSON.stringify(row['nomeentidade']) + "";
    result += tmp;         //Imprime as rows da b
});
await client.end();
console.log(result);
return result;

}

Я получу пустой массив со стороны Vue, нотерминал из узла возвращает правильный результат.

NEW EDIT: пустой массив: пустой массив на консоли со стороны Vue

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...