微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将ElephantSQL与node.js连接

如何解决将ElephantSQL与node.js连接

我是编程的新手,我试图在节点中使用ElephantSql postgres数据库服务器。但是它没有连接。(我使用相同的代码进行重复运算)。

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const PORT = process.env.PORT || 3001;

const app = express();

app.use(cors())
app.use(bodyParser.json());


var pg = require('pg');
var client = new pg.Client("postgres:/.elephantsql.com:The Actual url");

client.connect(function(err) {
  if(err) {
    return console.error('Could not connect to postgres',err);
  }
  client.query('SELECT Now() AS "theTime"',function(err,result) {
    if(err) {
      return console.error('error running query',err);
    }
    console.log(result.rows[0].theTime);
    // >> output: 2018-08-23T14:02:57.117Z
    client.end();
  });

});

app.get('/',(req,res) => { res.send('its working') })

app.listen(PORT,() => {
  console.log(`app is running on PORT:${PORT}`);
})

解决方法

删除client.end()对我有用。然后,您可以在路由中使用client.query来运行查询。

例如,

app.get('/',async (req,res) => {
    try {
        const results = await client.query('SELECT * FROM your_table');
        res.json(results);
    } catch (err) {
        console.log(err);
    }
}

但是,我建议按照文档说明将您复制的代码块放在单独的文件中。然后导出客户端。

例如,我们将文件命名为Elephantsql.js

var pg = require('pg');
var client = new pg.Client("postgres:/.elephantsql.com:The Actual url");

client.connect(function(err) {
  if(err) {
    return console.error('could not connect to postgres',err);
  }
  client.query('SELECT NOW() AS "theTime"',function(err,result) {
    if(err) {
      return console.error('error running query',err);
    }
    console.log(result.rows[0].theTime);
    // >> output: 2018-08-23T14:02:57.117Z
  });

});

module.exports = client;

然后,您所需要做的就是无论路径在哪里都需要client变量,然后可以再次使用client.query。

const client = require('./elephantsql');

app.get('/',res) => {
    try {
        const results = await client.query('SELECT * FROM your_table');
        res.json(results);
    } catch (err) {
        console.log(err);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。