FlowiseAI/Flowise · error · Error
${e}
Error message
${e} What it means
Supabase's `add` path wraps failures from `SupabaseUpsertVectorStore.fromDocuments` / upsert into `new Error(e)`. When a recordManager is supplied it goes through index/upsert with cleanup; otherwise `fromDocuments`. The re-wrap discards the original stack. Underlying causes are Supabase project URL/keys, RLS policies, RPC function missing, or embedding dimension mismatch.
Source
Thrown at packages/components/nodes/vectorstores/Supabase/Supabase.ts:174
recordManager,
vectorStore,
options: {
cleanup: recordManager?.cleanup,
sourceIdKey: recordManager?.sourceIdKey ?? 'source',
vectorStoreName: tableName + '_' + queryName
}
})
return res
} else {
await SupabaseUpsertVectorStore.fromDocuments(finalDocs, embeddings, {
client,
tableName: tableName,
queryName: queryName
})
return { numAdded: finalDocs.length, addedDocs: finalDocs }
}
} catch (e) {
throw new Error(e)
}
},
async delete(nodeData: INodeData, ids: string[], options: ICommonObject): Promise<void> {
const supabaseProjUrl = nodeData.inputs?.supabaseProjUrl as string
const tableName = nodeData.inputs?.tableName as string
const queryName = nodeData.inputs?.queryName as string
const embeddings = nodeData.inputs?.embeddings as Embeddings
const recordManager = nodeData.inputs?.recordManager
const credentialData = await getCredentialData(nodeData.credential ?? '', options)
const supabaseApiKey = getCredentialParam('supabaseApiKey', credentialData, nodeData)
const client = createClient(supabaseProjUrl, supabaseApiKey)
const supabaseStore = new SupabaseVectorStore(embeddings, {
client,
tableName: tableName,
queryName: queryNameView on GitHub (pinned to abe4a8601a)
Solutions
- Use the service role key for server-side ingestion (bypasses RLS) and confirm the project URL.
- Provision the table and the match RPC (`queryName`) per the pgvector + Supabase guide.
- Ensure the embedding column dimension matches the model output.
- Temporarily test an insert directly via the Supabase client to surface the real error.
Example fix
// before
catch (e) { throw new Error(e) }
// after
catch (e) { throw new Error(`Supabase add failed: ${e instanceof Error ? e.message : String(e)}`, { cause: e }) } Defensive patterns
Strategy: try-catch
Validate before calling
function validateSupabaseAddInputs(inputs: any, creds: any) {
if (!inputs?.supabaseProjUrl) throw new Error('supabaseProjUrl is required')
if (!creds?.supabaseApiKey) throw new Error('supabaseApiKey is required')
if (!inputs?.tableName) throw new Error('tableName is required')
} Type guard
null
Try / catch
try { await ingest() } catch (e) { throw new Error(`Supabase ingest failed: ${e instanceof Error ? e.message : String(e)}`, { cause: e }) } Prevention
- Use the service role key server-side to bypass RLS.
- Provision the table and match RPC via the pgvector migration.
- Keep embedding dimension == vector column dimension.
- Preserve original error with `cause`.
When it happens
Trigger: Invalid `supabaseProjUrl`/`supabaseApiKey`; Row-Level Security blocking insert; the match query RPC (`queryName`) does not exist; vector dimension mismatch with the table column; network/region outage on the Supabase project.
Common situations: Service role key swapped for anon key (RLS blocks writes); table or RPC not provisioned; embedding model changed dimension; project paused on free tier.
Related errors
AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12).
Data as JSON: /api/errors/23a7723a3dad6c92.
Report an issue: GitHub.