我可以在客户端使用 PostgreSQL (pg) (express/node.js)

Posted

技术标签:

【中文标题】我可以在客户端使用 PostgreSQL (pg) (express/node.js)【英文标题】:Can I use PostgreSQL (pg) in the client-side (express/node.js) 【发布时间】:2012-03-15 17:46:57 【问题描述】:

我想在客户端使用 PostgreSQL。那可能吗?可以给我这个代码吗?

在我的 server.js 中

   var pg = require('pg');

在我的客户端

     var conString = "postgres://postgres:pass@localhost/mydb";
     var client = new pg.Client(conString);
     client.connect();
     var query = client.query("SELECT * FROM users ");        
     query.on('row', function(row) 
             alert(row.name);
     );

我尝试了这段代码,但什么也没发生。虽然我可以有一个与此类似的代码,我在其中连接 PostgreSQL 并在客户端脚本上使用查询。

【问题讨论】:

这将是一个巨大的安全风险。您应该在后端获取数据并将其传递给客户端。 您是否在客户端或服务器端遇到任何错误? 【参考方案1】:

不,这(显然)不可能。无论如何,您都不想让客户直接访问您的数据库。除此之外,即使您在客户端和服务器端都使用 JS,这与使用例如服务器上的 php 或 Python - 它之间的唯一通信可以通过 AJAX 和常规 http 请求进行。

【讨论】:

感谢您的信息。我刚刚意识到,如果您允许客户端使用数据库,那么破解网站将非常容易。 CouchApps 让客户端直接访问数据库,如果您在数据库中进行了适当的验证,这并不是不安全的。 也许有人应该告诉我为什么这如此明显?假设您的数据库需要身份验证,为什么您永远不允许客户端连接到您的数据库?对我来说似乎是一个合理的假设。 身份验证是访问的一个方面。我们还需要获得适当的授权。使用基本 DBMS 功能实现授权并不容易,而且通常甚至可能无法提供满足业务需求的必要功能。 @Amitabh 这基本上不是真的。我可能希望允许对我的数据库进行直接只读访问。如果没有这个特性,我必须实现一个瘦代理,它应该被开发、测试、交付和维护,因为数据库不支持直接 HTTP 调用。

以上是关于我可以在客户端使用 PostgreSQL (pg) (express/node.js)的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 数据库备份与还原

postgresql分布式集群之citus

PostgreSQL重新读取pg_hba.conf文件

pg快速入门--配置文件

使用 pg-promise 记录特定的 postgresql 查询

无法使用 PHP pg_connect() 连接到 PostgreSQL