Skip to content

cloud

云函数工具。

导入

typescript
import { parseCloudMethodOutput, parseCloudModuleOutput, respondCloudMethod, createCloudObjectError } from '@cloudcome/utils-uni/cloud'

类型定义

CloudMethodOutput<O>

typescript
interface CloudMethodOutput<O> {
  errCode?: number | string
  errMsg?: string
  data?: O
}

CloudModuleOutput<O>

typescript
interface CloudModuleOutput<O> {
  errCode?: number | string
  errMsg?: string
  data?: O
}

函数

parseCloudMethodOutput

解析云方法输出,自动处理错误。

typescript
function parseCloudMethodOutput<O>(output: CloudMethodOutput<O>, fallbackErrorMessage?: string): O

参数

参数类型默认值描述
outputCloudMethodOutput<O>-云方法输出
fallbackErrorMessagestring''可选,错误回退消息

返回值

O - 解析后的数据

示例

typescript
const output = {
  errCode: 0,
  data: { name: 'Alice' }
}

const data = parseCloudMethodOutput(output)
console.log(data) // { name: 'Alice' }

// 错误处理
const errorOutput = {
  errCode: 1001,
  errMsg: '用户不存在'
}

try {
  parseCloudMethodOutput(errorOutput)
} catch (error) {
  console.error(error.message) // '用户不存在'
}

parseCloudModuleOutput

解析云模块输出,自动处理错误。

typescript
function parseCloudModuleOutput<O>(
  output: CloudModuleOutput<O>,
  fallbackErrorMessage?: string
): Omit<O, 'errCode' | 'errMsg'>

参数

参数类型默认值描述
outputCloudModuleOutput<O>-云模块输出
fallbackErrorMessagestring''可选,错误回退消息

返回值

Omit<O, 'errCode' | 'errMsg'> - 解析后的数据

示例

typescript
const output = {
  errCode: 0,
  data: { name: 'Alice' },
  errCode: undefined,
  errMsg: undefined
}

const data = parseCloudModuleOutput(output)
console.log(data) // { data: { name: 'Alice' } }

respondCloudMethod

响应云方法调用。

typescript
function respondCloudMethod<O>(
  fn: () => MaybePromise<O>,
  append?: AnyObject
): Promise<CloudMethodOutput<O>>

参数

参数类型描述
fn() => MaybePromise<O>云方法实现函数
appendAnyObject可选,附加到输出的属性

返回值

Promise<CloudMethodOutput<O>> - 云方法输出

示例

typescript
// 云方法实现
export async function getUser(id: string) {
  return respondCloudMethod(async () => {
    const user = await db.collection('users').doc(id).get()
    return user.data
  })
}

// 带附加属性
export async function getUserWithMeta(id: string) {
  return respondCloudMethod(
    async () => {
      const user = await db.collection('users').doc(id).get()
      return user.data
    },
    { timestamp: Date.now() }
  )
}

createCloudObjectError

创建云对象错误。

typescript
function createCloudObjectError(
  message: string,
  code?: number | string
): Error & { errCode?: number | string; errMsg?: string }

参数

参数类型描述
messagestring错误消息
codenumber | string可选,错误代码

返回值

Error & { errCode?: number | string; errMsg?: string } - 错误对象

示例

typescript
throw createCloudObjectError('用户不存在', 1001)
// Error { message: '用户不存在', errCode: 1001, errMsg: '用户不存在' }

throw createCloudObjectError('权限不足', 'PERMISSION_DENIED')
// Error { message: '权限不足', errCode: 'PERMISSION_DENIED', errMsg: '权限不足' }

基于 MIT 许可发布