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: queryName

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Use the service role key for server-side ingestion (bypasses RLS) and confirm the project URL.
  2. Provision the table and the match RPC (`queryName`) per the pgvector + Supabase guide.
  3. Ensure the embedding column dimension matches the model output.
  4. 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

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.