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

一、云函数

云函数 在传统开发模式中充当的角色就是接口。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"表成功。(表名不可重复)

相关推荐
首先要睡饱7 小时前
学习腾讯无极低代码的第六天——Part1
低代码·腾讯
NocoBase9 小时前
欧洲蘑菇巨头 Okechamp 如何用 6 周升级物流调度系统?
低代码·开源·资讯
霍格沃兹测试开发学社测试人社区1 天前
Dify入门指南(2):5 分钟部署 Dify:云服务 vs 本地 Docker
人工智能·低代码
得帆云低代码2 天前
2025平台进化趋势:AI与低代码重塑企业应用构建引擎(上)
低代码·openai·ai编程
pengzhuofan4 天前
项目一系列-第4章 在线接口文档 & 代码模板改造
低代码·ruoyi
Spider_Man6 天前
预览一开,灵魂出窍!低代码平台的魔法剧场大揭秘🎩✨
前端·低代码·typescript
大升聊APS6 天前
茗鹤工业低代码可视化技术开发平台
低代码
首先要睡饱7 天前
学习无极低代码的第1天
低代码
Spider_Man7 天前
物料区的“超市大冒险”:组件、遥控器与快乐星球的奇遇记 🛒🦄
前端·低代码·typescript