You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在服务端调用Postgres函数?现有RPC仅支持客户端调用

在服务端调用Postgres函数的方法

方法一:使用Supabase服务端SDK

服务端同样可以通过Supabase SDK调用Postgres函数,只需用服务端专用密钥初始化客户端,权限比客户端SDK更高。示例代码:

const { createClient } = require('@supabase/supabase-js');

// 用服务端密钥初始化客户端
const supabase = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_SERVICE_ROLE_KEY);

async function invokePostgresFunction() {
  const { data, error } = await supabase.rpc('hello_world');
  if (error) {
    console.error('函数调用失败:', error);
    return;
  }
  console.log('函数返回数据:', data);
}

invokePostgresFunction();

方法二:直接使用Postgres客户端库(如pg)

如果需要更灵活的数据库操作,可直接用Postgres官方客户端库连接数据库,通过SQL语句调用函数。示例代码:

const { Pool } = require('pg');

// 配置数据库连接(连接字符串可从Supabase控制台获取)
const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
});

async function callFunction() {
  const client = await pool.connect();
  try {
    // 直接执行函数调用的SQL语句
    const result = await client.query('SELECT hello_world()');
    console.log('函数返回结果:', result.rows[0]);
  } catch (err) {
    console.error('调用出错:', err);
  } finally {
    // 释放数据库连接
    client.release();
  }
}

callFunction();

注意事项

  • 确保服务端使用的密钥(如SUPABASE_SERVICE_ROLE_KEY)拥有执行目标Postgres函数的权限
  • 目标Postgres函数需配置正确的权限(例如设置为PUBLIC,或给对应的数据库角色授权执行权限)

内容的提问来源于stack exchange,提问作者Kirk Strobeck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:24:59