NodeJS Postgres 切换工作模式
Posted
技术标签:
【中文标题】NodeJS Postgres 切换工作模式【英文标题】:NodeJS Postgres switch working schema 【发布时间】:2018-07-06 15:15:06 【问题描述】:我正在尝试连接到我的 postgres 数据库。
一切正常,但在我的数据库中,我有 2 个模式。其中一个是PgAdmin
(public
)默认创建的,第二个是我自己创建的ZTB
。
当我使用 NodeJS 连接到我的数据库时,它默认连接到“public
”架构,因此我无法从“ZTB”查询表。
有没有办法切换NodeJS服务器中当前的工作模式?
问候
【问题讨论】:
欢迎来到 ***,拉斐尔。这是您在How to create a Minimal, Complete, and Verifiable example 上的指南。您能告诉我们您正在使用哪个 PG 模块以及您正在形成的连接字符串吗?您实施的相关 sn-ps 将帮助我们为您提供帮助。set search_path ...
postgresql.org/docs/current/static/…
我自己解决了。 client.query("SET search_path TO 'ZTB';");
完成了这项工作。更新:正如@a_horse_with_no_name 所说。
@Rafael 你能发表你的评论作为答案吗?
【参考方案1】:
我自己找到了解决方案 - client.query("SET search_path TO 'ZTB';");
完全按照 @a_horse_with_no_name 后来所说的那样完成了这项工作。
【讨论】:
【参考方案2】:首先,将架构名称更改为小写。大写可能会产生问题。
接下来,无论您想查询什么,只需执行 [您的架构名称]。[您的表名称],您应该没问题。
client.query("select * from ztb.[your table name]"))
【讨论】:
感谢您的回复,但这不是我问题的答案,它已在 2 年前得到解决。 ;)【参考方案3】:如果您使用pg-promise,则可以直接选择架构。
在Initialization Options 中,有一个选项schema
支持灵活的值:
const pgp = require('pg-promise')(
schema: ['public', 'ZTB'] // access tables from "public" + "ZTB"
);
您甚至可以将schema
设置为返回架构的函数。
【讨论】:
以上是关于NodeJS Postgres 切换工作模式的主要内容,如果未能解决你的问题,请参考以下文章
存储 GeoJson 点并在给定距离/半径内查找点 | NODEJS、Postgres、NestJs、TypeOrm