将ElephantSQL与node.js连接

92dk7w1h  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(130)

我是新的编程我试图使用ElephantSql postgres数据库服务器在节点..但它不连接..(我使用了相同的代码从doumentation。)

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}`);
})
0dxa2lsx

0dxa2lsx1#

删除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('/', async (req, res) => {
    try {
        const results = await client.query('SELECT * FROM your_table');
        res.json(results);
    } catch (err) {
        console.log(err);
    }
}

相关问题