本页
    
    invoke()
应用使用MemFire Cloud的云函数功能时,需要结合supabase-wechat-stable-v2与memfire-cloud-functions-js 这两个SDK进行云函数的调用。
使用方法
在根目录下执行命令,安装依赖
  npm install supabase-wechat-stable-v2
  
  添加一个js/ts文件与数据库建立连接,添加以下代码,并且将应用的URL和anon_key填写进去。
  
import { createClient } from 'supabase-wechat-stable-v2'
const supabaseUrl = ''
const supabaseAnonKey = ''
export const supabase = createClient(supabaseUrl, supabaseAnonKey)
  
  在需要使用云函数的页面调用,填写用户在MemFire Cloud创建的云函数生成的访问地址和访问方法。
    const { data, error } = await functions.invoke(
      '访问地址',{method:'访问方法'}
    );
  
  参数
- 
  functionName requiredstring要调用的函数的名称 
- 
  invokeOptions requiredFunctionInvokeOptions未提供说明。 
注释
- 需要一个授权标头。
- 调用参数通常符合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(
      '访问地址',{method:'访问方法'}
    );
  
  错误处理
如果你的函数抛出一个错误,将返回FunctionsHttpError;如果Supabase Relay在处理你的函数时出现错误,将返回FunctionsRelayError;如果调用你的函数时出现网络错误,将返回FunctionsFetchError。
  import { FunctionsHttpError, FunctionsRelayError, FunctionsFetchError } from "supabase-wechat-stable-v2";
const { data, error } = await supabase.functions.invoke('访问地址', {
  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:'访问方法'
},)