跳到主要内容

调用云开发资源

在云函数中可以便捷地调用云开发的各种资源,包括数据库、云存储、其他云函数等。Node.js 云函数使用 @cloudbase/node-sdk,其他语言使用 HTTP API

Node.js 云函数

Node.js 云函数使用 @cloudbase/node-sdk 调用云开发资源,在云函数环境中无需配置鉴权参数,可直接调用。

安装 SDK

npm install @cloudbase/node-sdk --save

初始化

在云函数中初始化 SDK,无需配置 secretIdsecretKey 等鉴权参数:

const tcb = require('@cloudbase/node-sdk')

const app = tcb.init({
env: tcb.SYMBOL_DEFAULT_ENV // 使用当前云函数默认环境 ID
})

调用数据库示例

const tcb = require('@cloudbase/node-sdk')
const app = tcb.init({
env: tcb.SYMBOL_DEFAULT_ENV
})

exports.main = async (event, context) => {
const db = app.database()

// 查询单条记录
const user = await db.collection('users')
.doc('user-id-123')
.get()

// 查询多条记录
const todos = await db.collection('todos')
.where({
completed: false
})
.orderBy('createdAt''desc')
.limit(10)
.get()

return {
user: user.data,
todos: todos.data
}
}

其他语言云函数

其他语言(Python、Java、Go、PHP 等)的云函数需要使用「HTTP API」调用云开发资源。

HTTP API 提供了通过 HTTP 协议访问云开发平台功能的接口,详细接口文档请参考 HTTP API 文档

示例:Python 云函数调用 MySQL 数据库

获取 access_token 请参考 获取AccessToken

import requests
import os

def main_handler(event, context):
# 获取环境变量
env_id = os.environ.get('TCB_ENV')

# 查询 film 表中导演为 Christopher Nolan 的电影
url = f'https://{env_id}.api.tcloudbasegateway.com/v1/rdb/rest/film'
params = {
'director': 'eq.Christopher Nolan',
'select': 'title,director,release_year,duration'
}

headers = {
'Authorization': 'Bearer <access_token>',
'Content-Type': 'application/json'
}

response = requests.get(url, params=params, headers=headers)

if response.status_code == 200:
return {
'code': 0,
'data': response.json()
}
else:
return {
'code': -1,
'message': response.text
}

💡 提示:

  • 在云函数环境中,可通过环境变量 TCB_ENV 获取环境 ID,TCB_CONTEXT_KEYS 获取访问令牌
  • 对于 Python、Java、Go 等语言,建议使用 HTTP API 的方式调用云开发资源
  • 详细的操作符、查询参数请查阅 MySQL 数据库查询文档
  • 完整的 HTTP API 接口请参考 HTTP API 文档

参考文档