一款低代码产品好不好用,数据建模的能力是一个重要的衡量指标。因为灵活的定义表之间的关系,自由的选择字段的类型,尤其在我们依据模型自动生成页面的时候是比较重要的。课程的第二节我们就介绍一下微搭低代码数据源的各项能力。
1 数据源的功能组成
打开控制台,展开我们的数据源,一共可以看到数据模型、通用选项集、API和数据连接器几个菜单
数据模型相当于关系型数据库的表的概念,可以创建表、创建字段,建立表和表之间的关系,微搭里叫关联关系。
数据模型除了可以定义字段外,还提供了后端的能力,比如常见的增删改查
此外还可以控制数据的权限,可以配置可读可写
在我们操作数据的时候,还可以触发工作流,在事件处理里定义
通用选项集相当于数据字典的自定义,可以配置下拉选择的选项
API相当于我们的后端能力,可以按照你熟悉的后端语言比如nodejs或者python写云函数
比如我们想实现登录逻辑,就可以传入用户名和密码,通过调用数据源来判断,如下是一个示例的调用代码
module.exports = async function (params, context) { // 这里是方法入参 console.log(params); const zh = params.zh const mm = params.mm /** * 可以在这里编写业务逻辑,例如: * 1. 使用 node-fetch 通过 HTTP 方式请求外部数据,并对获取的数据进行加工; * 2. 使用 context.database API 来直接操作云开发云数据库; * 3. 使用 context.callModel 来操作其他数据模型数据; * 4. 使用 context.callConnector 来使用API; * 5. 使用 context.app.callFunction 来调用同环境的云开发云函数; */ const result = await context.callModel({ name: 'zcyhxx_7diyeuv', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看 methodName: 'wedaGetItem', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法 params: { where:[ { key:'zh', rel:'eq', val:zh }, { key:'mm', rel:'eq', val:mm } ] }, // 数据模型方法的入参 }); let islogin = false if(result._id){ islogin = true }else{ islogin = false } // 这里返回数据,和出参结构映射 return {islogin:islogin}; };
而数据连接器相当于可以调用外部的mysql,当然了mysql还是比较昂贵的,如果你觉得微搭本身的文档数据库就够用了,也就没必要每年花比较多的钱再购置关系型数据库了
2 在低码编辑器中调用数据源的能力
我们如果定义了API,当然是要在前端调用了,可以在应用里创建javascript方法,用特定的API来调用,以下是一个示例
export default async function({event, data}) { const userInfo = await $w.auth.getUserInfo(); console.log('$w.auth.getUserInfo:', userInfo); const openid = userInfo.openId const result = await $w.cloud.callDataSource({ dataSourceName: "zcyhxx_7diyeuv", methodName: "wedaGetItemV2", params: { // 筛选内容,筛选内容推荐使用编辑器数据筛选器生成 filter: { where: { $and: [ { openid: { $eq: openid, // 获取单条时,推荐传入_id数据标识进行操作 }, }, ], }, }, select: { $master: true, // 常见的配置,返回主表 }, }, }); console.log("请求结果", result); if(result._id){ $w.app.dataset.state.isLogin = true }else{ $w.app.dataset.state.isLogin = false $w.utils.redirectTo({ pageId: "u_deng_lu_ye", // 页面 Id packageName: "", // 主应用为空或不填,子模块填写 子包目录,查找位置 子包编辑器 --- 页面 --- 子包目录 params: { key: "value" }, }); } }
具体的逻辑我们在登录章节讲解如何使用,先有个基本概念即可
3 视频讲解
我录制了一个数据源的讲解,喜欢看视频的同学可以浏览一下
02数据源介绍