# 自定义代码(云函数)

在自定义连接器中使用自定义代码能力,可以方便开发者实现不同的业务场景。开发者可以通过 自定义代码 中内置的 API 或 npm 包调用外部 HTTP 服务、微搭数据模型、自定义连接器或云开发云函数。

# 自定义代码

自定义代码是一种运行在服务端的 NodeJS 代码,底层是云开发云函数。以下是一个自定义代码的主要构成:

/**
* 可以在这里引用内置 NPM 包,例如:
**/
const fetch = require('node-fetch');

/**
* 在这个函数体内可以实现业务逻辑
**/
module.exports = async function (params, context) {
  // params 即为入参定义的结构
  // context 为平台内置对象,包含了内置的 API

  // 在这里返回这个方法的结果,需要与出参定义的结构映射
  return {
    _id: 123456
  };
};

# 使用场景示例

# 发起 HTTP 请求

开发者可以使用 node-fetch 库来发起 HTTP 请求。具体可以参见 node-fetch 使用文档

const fetch = require('node-fetch');

module.exports = async function (params, context) {

  const response = await fetch('https://reqres.in/api/users');
  const result = await response.json();

 // 在这里返回这个方法的结果,需要与出参定义的结构映射
  return {
    _id: '123456'
  };
};

# 数据模型

开发者可以使用 context.callModel 方法来操作数据模型:

module.exports = async function (params, context) {
  const result = await context.callModel({
    name: '数据模型标识',
    methodName: '方法标识',
    params: {}, // 方法入参
  });

  // 在这里返回这个方法的结果,需要与出参定义的结构映射
  return {
    _id: '123456',
  };
};

# 连接器/自定义连接器

开发者可以使用 context.callConnector 来调用连接器或自定义连接器方法:

module.exports = async function (params, context) {
  const result = await context.callConnector({
    name: '连接器/自定义连接器标识',
    methodName: '方法标识',
    params: {}, // 方法入参
  });

  // 在这里返回这个方法的结果,需要与出参定义的结构映射
  return {
    _id: '123456'
  };
};

# 云开发云函数

开发者可以使用 context.app.callFunction 来调用同环境下的云开发云函数:

module.exports = async function (params, context) {
  const result = await context.app.callFunction({
    name: '云开发云函数名称',
    params: {}, // 方法入参
  });

  // 在这里返回这个方法的结果,需要与出参定义的结构映射
  return {
    _id: 123456
  };
};

# 云开发数据库

开发者可以使用 context.database 来操作 云开发数据库,查看 云开发数据库 API

module.exports = async function (params, context) {
  const result = await context.database.collection('数据库集合名称').get();

  // 在这里返回这个方法的结果,需要与出参定义的结构映射
  return {
    _id: 123456
  };
};

注意:

此方法只能操作微搭云开发环境下的数据库,无法跨环境操作数据库。