我使用节点-postgres连接到启用连接池的PostgreSQL 9.6数据库。所有连接都使用同一个数据库用户。我不能使用多个DB用户的一个原因是,据我所读,行级安全性和视图在这种情况下不能很好地协同工作,因为视图的所有者用于RLS。我使用SET LOCAL设置当前应用程序用户id,然后由行级安全性使用子句使用该id。我认为用连接池实现这一点的唯一方法是用节点-postgres包装事务中的每个查询,并在每个事务中执行SET LOCAL命令,如下所示。
SET LOCAL postgres.my_user =