在n8n中使用Supabase数据库的详细指南
发表于:2025-06-30 12:34:14浏览:9次
一、准备工作
获取Supabase连接信息
- 登录Supabase控制台,进入目标项目
- 点击顶部”Connect”按钮,选择”Session pooler”连接方式(推荐用于n8n)
- 记录连接参数:
- 主机:
aws-0-[REGION].pooler.supabase.com
- 端口:5432
- 数据库名:postgres
- 用户名:
postgres.[项目ID]
(格式示例:postgres.apbkobhfnmcqqzqeeqss) - 密码:在项目创建时设置的数据库密码(可在Settings > Database重置)
- 主机:
获取API密钥(如使用Vector Store)
- 进入Settings > API
- 复制”service_role”密钥(用于服务器端操作)
二、使用PostgreSQL节点连接Supabase
添加PostgreSQL节点
- 在n8n工作流中添加”PostgreSQL”节点
- 点击”Credentials” > “Create new”创建新凭证
配置数据库连接
- 填写连接参数:
- Host: 从Supabase获取的主机地址
- Port: 5432
- Database: postgres
- Username: 完整的用户名(包含项目ID)
- Password: Supabase数据库密码
- SSL: 启用(选择”require”模式)
- 填写连接参数:
测试连接
- 点击”Test Connection”按钮验证配置
- 若连接失败,检查:
- 密码是否正确
- SSL设置是否启用
- 网络是否支持IPv4连接
三、使用Supabase Vector Store节点(适用于RAG场景)
添加Supabase Vector Store节点
- 在n8n中添加”Supabase Vector Store”节点
- 配置认证信息:
- Supabase URL:
https://[项目ID].supabase.co
- Service Role Secret: 从Supabase API设置中获取的service_role密钥
- Supabase URL:
创建向量表
- 进入Supabase控制台的SQL编辑器
运行以下脚本创建必要的表结构:
-- 启用向量扩展 create extension if not exists vector; -- 创建文档表 create table documents ( id uuid primary key, content text, -- 文档内容 metadata jsonb, -- 元数据 embedding vector(1536) -- 向量字段,1536维度适用于OpenAI嵌入 ); -- 创建相似性搜索函数 create function match_documents ( query_embedding vector(1536), filter jsonb default '{}' ) returns table ( id uuid, content text, metadata jsonb, similarity float ) language plpgsql as $$ #variable_conflict use_column begin return query select id, content, metadata, 1 - (documents.embedding <=> query_embedding) as similarity from documents where metadata @> filter order by documents.embedding <=> query_embedding; end; $$;
配置向量存储节点
- 在n8n节点中选择创建的”documents”表
- 设置查询名称为”match_documents”
- 配置嵌入模型(如OpenAI嵌入)
四、示例工作流
从Supabase读取数据
- 配置PostgreSQL节点为”Execute Query”模式
- 输入SQL查询:
SELECT * FROM your_table LIMIT 10
- 连接到后续节点处理数据
向Supabase写入数据
- 配置PostgreSQL节点为”Insert”模式
- 选择目标表并映射输入字段
- 连接触发器节点(如定时触发器或Webhook)
向量相似性搜索
- 添加”AI Model”节点生成查询嵌入
- 连接”Supabase Vector Store”节点执行相似性搜索
- 将结果传递给LLM节点生成自然语言回答
五、常见问题解决
连接拒绝错误
- 确认Supabase项目状态正常
- 检查网络是否支持IPv4(Session pooler模式)
- 验证主机和端口是否正确
认证失败
- 重置数据库密码(Settings > Database)
- 确认用户名格式正确(包含项目ID)
SSL相关错误
- 确保SSL模式已启用
- 如需要证书,从Supabase控制台下载根证书并在n8n中配置
六、安全最佳实践
- 不要在前端暴露service_role密钥,仅在服务器端使用
- 启用Row Level Security (RLS)保护敏感数据
- 定期轮换数据库密码和API密钥
- 限制n8n服务器的IP访问权限(Supabase > Project Settings > Network)