微搭低代码教程四:云函数、云数据库

一、云函数

云函数 在传统开发模式中充当的角色就是接口。API 调用云函数,云函数去操作数据库后把返回值响应给页面。


二、创建云函数

您可以在 云开发开放平台 单击云函数 > 新建云函数
  • 1 新建云函数
  • 2 在线开发
在线开发云函数

本例云函数为"executorHandler",在该目录中:

  • node_modules 为该云函数的依赖,需要通过 npm install xx 去安装相关依赖
  • index.js 云函数主文件(在该文件中编写业务代码增、删、改、查)
  • package.json 该云函数配置

二、编写云函数

  • 新增 add()
  • 删除 remove()
  • 更新 aupdate()
  • 查询 get()

2.1 引入及初始化

js 复制代码
const cloud = require("wx-server-sdk");
cloud.init({
      env: "dev-1234567890", // 使用当前云环境
});

const db = cloud.database();
const _ = db.command;

2.2 新增

场景:往数据库表"user"添加一个用户

js 复制代码
const cloud = require("wx-server-sdk");
cloud.init({
      env: "dev-1234567890", // 使用当前云环境
});

const db = cloud.database();
const _ = db.command;

exports.main = async (event, context) => {
      // event 为 APIs 传入的参数;context 为环境变量,包含了openId、appId等
      const { api } = event;

      switch (api) {
            // 新增
            case "onAdd":
                  return await onAddHandler(event, context);
            default:
                  return {
                        code: -1,
                        msg: "api not found",
                  };
      }
};

// 新增
async function onAddHandler(event, context) {
      const transaction = await db.startTransaction();  // 开始事务
      let result;

      try {
            result = await transaction.collection("user").add({
                  data: [{
                        openid: context.OPENID,
                        name: event.userName,
                        status: event.status,
                        createTime: Date.now()
                  }]
            });
            transaction.commit(); // 提交事务
      } catch (error) {
            transaction.rollback();
            throw new Error("unknwon error");
      }
      return result;
}

2.3 删除

场景:在数据库"user"表中删除某一个用户

js 复制代码
const cloud = require("wx-server-sdk");
cloud.init({
      env: "dev-1234567890", // 使用当前云环境
});

const db = cloud.database();
const _ = db.command;

exports.main = async (event, context) => {
      // event 为 APIs 传入的参数;context 为环境变量,包含了openId、appId等
      const { api } = event;

      switch (api) {
            // 删除
            case "onDelete":
                  return await onDeleteHandler(event, context);
            default:
                  return {
                        code: -1,
                        msg: "api not found",
                  };
      }
};

// 删除
async function onDeleteHandler(event, context) {
      const transaction = await db.startTransaction();  // 开始事务
      let result;
      try {
            result = await transaction.collection("user")
                  .where({ 
                        _id: event._id 
                  })
                  .remove();
            transaction.commit(); // 提交事务
            return {
                  code: 0,
                  message: '删除成功',
                  data: result
            };
      } catch (error) {
            transaction.rollback();
            throw new Error("unknwon error");
      }
      return result;
}

2.4 更新

场景:在数据库"user"表中更新某一个用户的状态

js 复制代码
const cloud = require("wx-server-sdk");
cloud.init({
      env: "dev-1234567890", // 使用当前云环境
});

const db = cloud.database();
const _ = db.command;

exports.main = async (event, context) => {
      // event 为 APIs 传入的参数;context 为环境变量,包含了openId、appId等
      const { api } = event;
      
      switch (api) {
            // 更新
            case "onUpdate":
                  return await onUpdateHandler(event, context);
            default:
                  return {
                        code: -1,
                        msg: "api not found",
                  };
      }
};

// 更新
async function onUpdateHandler(event, context) {
      const transaction = await db.startTransaction();  // 开始事务
      let result;
      try {
            result = await transaction.collection("user")
                  .where({ 
                        _id: event._id 
                  })
                  .update({
                        data: {
                              STATUS: "1",
                              UPDATE_TIME: Date.now()
                        }
                  });
            transaction.commit(); // 提交事务
            return {
                  code: 0,
                  message: '更新成功',
                  data: result
            };
      } catch (error) {
            transaction.rollback();
            throw new Error("unknwon error");
      }
      return result;
}

2.5 查询

场景:查询数据库表"user"中所有状态为"1"的数据

js 复制代码
const cloud = require("wx-server-sdk");
cloud.init({
      env: "dev-1234567890", // 使用当前云环境
});

const db = cloud.database();
const _ = db.command;

exports.main = async (event, context) => {
      // event 为 APIs 传入的参数;context 为环境变量,包含了openId、appId等
      const { api } = event;

      switch (api) {
            // 查询
            case "onGet":
                  return await onGetListHandler(event, context);
            default:
                  return {
                        code: -1,
                        msg: "api not found",
                  };
      }
};

// 查询
async function onGetListHandler(event, context) {
      let result = await transaction.collection("user")
            .where({ 
                  status: "1"
            })
            .get();
      return result;
}

2.6 调试 & 部署

右键点击云函数,可以对云函数进行调试和部署。测试云函数是否通过,点击"调试";通过 APIs 方式联调前,需对云函数进行部署。


三、云数据库

在这里,数据库我们选择"文档型"。

集合名称为表名,权限设置可按实际需求选择,点击"确定"即创建"user"表成功。(表名不可重复)

相关推荐
中间件XL18 小时前
接口(集成)平台设计(一)-服务,接口,数据集和数据源
低代码·集成平台·接口平台
摩尔元数2 天前
2026年汽车仪表工厂选MES,厂商推荐
低代码·汽车·制造·mes
麦聪聊数据3 天前
利用SQL2API模式重构微服务中的数据查询层
数据库·sql·低代码·微服务·架构
云捷配低代码3 天前
低代码平台落地方法论:从试点到推广(二)
低代码·需求分析·数字化·数字化转型
麦聪聊数据3 天前
能源互联网的数据桥梁:构建安全、实时的电力数据共享 API 网关
数据库·sql·安全·低代码
低代码布道师4 天前
教培管家第13讲:课程排课——智能排课算法与自动化生成
低代码·小程序·云开发
低代码布道师5 天前
教培管家第11讲:班级管理——教务系统的“集成枢纽”
低代码·小程序·云开发
加加今天也要加油5 天前
Oinone × AI Agent 落地指南:元数据即 Prompt、BPM 状态机护栏、SAGA 补偿、GenUI
人工智能·低代码·prompt
启效云5 天前
【技术赋能实战】焱蓝智益科技:如何用物联网+自组网打通消防应急通信“最后一公里”?
科技·物联网·低代码·软件开发·低代码开发