假设我有一个远程Postgres数据库:
postgres://<user>:<passwd>@foo.us-west-1.compute.amazonaws.com:5432/<dbname>
连接到该数据库的通常方法是启动后端服务器,并使用SQL库通过该服务器发送请求。但是,我想知道是否有可能使用纯JS从浏览器环境直接连接到DB,例如使用fetch
。
我试了几样东西,但似乎都不起作用。
给出fetch("postgres://<user>:<passwd>@foo.us-west-1.compute.amazonaws.com:5432/<dbname>")
URL scheme "postgres" is not supported
给出fetch("http://foo.compute-1.amazonaws.com:5432/<dbname>")
net::ERR_EMPTY_RESPONSE
返回fetch("https://foo.compute-1.amazonaws.com:5432/<dbname>")
net::ERR_CONNECTION_CLOSED
.
我想我需要把凭据在我的请求某处,但我不确定把它们放在哪里。
fetch
工作在HTTP层,而Postgres本身不支持HTTP通信。因此,直接从浏览器查询数据库是不可能的。
然而,你可以配置一些工具,比如Postgrest,它可以在你的DB层顶部创建一个HTTP接口,你可以使用它来与DB通信。
如果你使用的是像AWS RDS这样的托管数据库,那么你可以使用他们的sdk从浏览器获取数据。