本页
invoke()
应用使用MemFire Cloud的云函数功能时,需要结合@supabase/supabase-js与memfire-cloud-functions-js 这两个SDK进行云函数的调用。
MemFire Cloud的云函数是MemFire Cloud独立开发的一套功能,需要结合@supabase/supabase-js与memfire-cloud-functions-js这两个SDK进行云函数的调用。在调用云函数时,需要填写完整的访问地址,与 supabase 的云函数使用方式略有不同,具体的使用方法请继续查阅以下文档。
使用方法
在根目录下执行命令,安装依赖
npm install @supabase/supabase-js
npm install memfire-cloud-functions-js
添加一个js/ts文件与数据库建立连接,添加以下代码,并且将应用的URL和anon_key填写进去。
import { createClient } from '@supabase/supabase-js'
import { FunctionsClient } from 'memfire-cloud-functions-js'
const supabaseUrl = ''
const supabaseAnonKey = ''
export const supabase = createClient(supabaseUrl, supabaseAnonKey)
export const functions = new FunctionsClient(supabase)
在需要使用云函数的页面调用,填写用户在MemFire Cloud创建的云函数生成的访问地址和访问方法。
const { data, error } = await functions.invoke(
'https://functions1.memfiredb.com/xxxx/functionName',{method:'访问方法'}
);
参数
-
functionName required
string
要调用的函数的访问地址
-
invokeOptions required
FunctionInvokeOptions
未提供说明。
注释
- 需要一个授权标头。
- 调用参数通常符合Fetch API规范。
- 当你向函数传递一个body时,我们会自动附加
Blob
、ArrayBuffer
、File
、FormData
和String
的Content-Type标头。如果它不符合这些类型,会默认为json
,将其序列化并附加Content-Type'头为
application/json。用户还可以自定义
Content-Type`。 - 响应会自动解析为
json
、blob
或form-data
,取决于你的函数发送的Content-Type
头。默认情况下,响应被解析为text
。
示例
基本调用
const { data, error } = await functions.invoke(
'https://functions1.memfiredb.com/xxxx/functionName',{method:'访问方法'}
);
错误处理
如果你的函数抛出一个错误,将返回FunctionsHttpError
;如果Supabase Relay在处理你的函数时出现错误,将返回FunctionsRelayError
;如果调用你的函数时出现网络错误,将返回FunctionsFetchError
。
import { FunctionsHttpError, FunctionsRelayError, FunctionsFetchError } from "@supabase/supabase-js";
const { data, error } = await supabase.functions.invoke('https://functions1.memfiredb.com/xxxx/functionName', {
headers: {
"my-custom-header": 'my-custom-header-value'
},
body: { foo: 'bar' },
})
if (error instanceof FunctionsHttpError) {
console.log('Function returned an error', error.message)
} else if (error instanceof FunctionsRelayError) {
console.log('Relay error:', error.message)
} else if (error instanceof FunctionsFetchError) {
console.log('Fetch error:', error.message)
}
传递自定义标头和传递queries参数。
你可以向你的函数传递自定义标头信息。注意:supabase-js会自动将授权
头与登录用户的JWT一起传递。
如果想通过queries方式传递参数,建议在访问地址后面追加query参数。如下所示:
const { data, error } = await supabase.functions.invoke('https://functions1.memfiredb.com/xxxxxxxxx/functionName?action=pay', {
headers: {
"my-custom-header": 'my-custom-header-value'
},
body: { foo: 'bar' },
method:'访问方法'
},)