目录
- 1 数据源的功能组成
- 2 在低码编辑器中调用数据源的能力
- 3 视频讲解
一款低代码产品好不好用,数据建模的能力是一个重要的衡量指标。因为灵活的定义表之间的关系,自由的选择字段的类型,尤其在我们依据模型自动生成页面的时候是比较重要的。课程的第二节我们就介绍一下微搭低代码数据源的各项能力。
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数据源介绍