node.js - 将 ElephantSQL 与 node.js 连接
问题描述
我是编程新手,我尝试在节点中使用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}`);
})
解决方案
删除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);
}
}
但是,我建议将您复制的代码块放在一个单独的文件中,如文档所述。然后导出客户端。
例如,我们将调用文件大象sql.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);
}
}
推荐阅读
- spring - 如何在 Spring 的 HandlerInterceptor 中获取原始处理程序 URI(带有通配符等)?
- tfs - Why one can set TFS predefined variables when they are said to be read-only?
- amazon-web-services - 启用 AWS Classic ELB 的跨区域负载平衡如何影响应用程序性能?
- python - TF-IDF 的纯 pandas 实现
- php - 查询后如何对ldap结果进行排序
- botframework - 在 Microsoft Teams 选项卡中打开 URL
- sql - 接收器中的 Azure 数据工厂 v2 非空列
- c++ - 与 MFC 功能区对接/浮动
- sql - Oracle SQL:WHERE 子句的语法,两个日期之间有一个日期
- ruby-on-rails - ruby on rails - 回形针 - nohandleerror - 找不到处理程序