函数使用指南
在快速入门中,我们已经创建了一个简单的函数,现在我们来详细说明一下。
js
export default async function handler(ctx: CloudContext) {
return "hello word"
}
CloudContext 的类型如下
js
type LinkReturn<T extends string> =
T extends `${string}/${string}` ? Promise<ModelStatic<Model<any, any>> | Record<string, any> | Array<any>> :
T extends `http${string}` ? Promise<any> : never;
interface CloudContext {
db: (key?: string) => Promise<Sequelize>;
link: <T extends string>(key: T, ctx: Omit<CloudContext, "link">) => LinkReturn<T>;
query: Record<string, string>;
body: Record<string, any>;
header: Record<string, string>;
headers: Record<string, string>;
}
ctx.db
ctx.db 用于获取数据库连接,返回值为 Sequelize 实例。key
表示一个数据库,在数据库页面可以进行设置,调用简单。
ctx.link
ctx.link 是内部函数访问机制,支持访问内部函数和外部http请求,返回值任意,当访问外部http请求时,仅支持返回json格式数据
js
// 外部仅支持get、post
ctx.link('get/http://localhost:8080/hello', {query:{}, body: {}, header: {}})
// 内部访问
ctx.link('model/request', ctx) // ctx 是任意对象
ctx.query
ctx.query 用于获取链接params上的参数,返回值为 Record 实例。
ctx.body
ctx.body 用于获取 body 体的参数,返回值为 Record 实例。
ctx.header 和 ctx.headers
这两个对象是等价的,当作为http请求时,会自动携带浏览器端的请求头,返回值为 Record 实例。