我要完成的工作是:我有一台运行Vue.js的服务器。在“ npm run dev”之后,该应用程序将显示在localhost:8080上。现在,在构建完所有内容之后,将执行组件中的以下代码: (我有一个运行在端口3000上的NodeJs服务器)
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侧的控制台中显示。有人可以为我提供解决方案和一些代码片段。我希望查询结果从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端得到一个空数组,但是node的终端返回了正确的结果。