如何为节点Postgres池显式定义架构

时间:2019-06-18 06:13:04

标签: node.js postgresql node-postgres

我正在使用nodepostgres池查询具有自定义架构的数据库。

有两种处理方法:

  1. 所有查询都需要使用customSchema.tablename之类的模式进行专门化。
  2. 在其他查询之前进行此查询:
    pool.query(SET search_path TO ${params["db_schema"]}, public

这些方法有两个问题:

  1. 我需要选择性地连接到两个DB。一个数据库具有自定义架构,而另一个则没有。所以我不能使用方法1。
  2. 使用查询方法设置seach_path时,它可用于一些查询,然后给出错误消息,指出它找不到表。我相信这是因为池连接超时或类似的原因。

那么,有没有一种方法可以定义架构,这是更一致的方法?

2 个答案:

答案 0 :(得分:1)

这取决于您的连接方式,但是如果您使用一致的用户,则可以运行:

ALTER USER SET search_path TO your_schema, public;

然后,无论何时用户连接,该用户都将默认设置该search_path。

答案 1 :(得分:0)

我不确定您在1.问题中到底是什么意思:

需要选择性地连接到两个DB。一个数据库具有自定义架构,而另一个则没有

也许solution可以为您提供帮助。

您也可以在这篇文章中找到它:https://stackoverflow.com/a/59887536/6496006 (第二部分是相关的)