有奖捉虫:行业应用 & 管理与支持文档专题 HOT
腾讯云微搭低代码的数据源提供了数据模型,开发者可以使用 context.callModel 方法来操作数据模型,具体模型方法包括:新增 wedaCreate、新增多条 wedaBatchCreate、删除 wedaDelete、批量删除 wedaBatchDelete、更新 wedaUpdate、批量更新 wedaBatchUpdate、查询 wedaGetItem、查询列表 wedaGetRecords。
本文以如下数据模型为例,说明数据模型方法的使用,示例代码为 APIs 中的自定义代码。



说明:
关于如何在编辑器中使用这些方法,请参见 Query 数据查询介绍
以下示例代码均为 APIs 自定义代码中数据模型的使用方式,更多用法请参见 APIs 自定义代码

新增 wedaCreate

添加一条记录。

入参说明

新增方法的输入参数为数据模型全部的非系统字段,例如:name、age 等。
{
"name": "张三",
"age": 15
}

出参说明

字段名称
字段标识
数据类型
说明
新记录的 ID
_id
文本
创建成功的数据标识
{
"_id": "16db756f62d7c0870b8caa2a39d33dcb"
}

使用示例

module.exports = async function (params, context) {
const result = await context.callModel({
name: 'example', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看
methodName: 'wedaCreate', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法
params: {
lastname: "张",
firstname: "三",
price: 15,
amount: 20,
}, // 数据模型方法的入参
});

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


新增多条 wedaBatchCreate

新增多条记录。

入参说明

字段名称
字段标识
数据类型
是否必填
说明
数据内容
records
对象数组
待新增的多条数据
{
"records": [
{
"name": "张三",
"age": 15
}
]
}

出参说明

字段名称
字段标识
数据类型
说明
新记录的 ID 数组
ids
文本数组
创建成功的数据标识
{
"ids": ["16db756f62d7c0870b8caa2a39d33dcb"]
}

使用示例

module.exports = async function (params, context) {
const result = await context.callModel({
name: 'example', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看
methodName: 'wedaBatchCreate', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法
params:{
records:[{
lastname: "张",
firstname: "三",
price: 15,
amount: 20,
}]
},// 数据模型方法的入参
});

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


删除 wedaDelete

删除一条指定数据标识的记录。

入参说明

字段名称
字段标识
数据类型
是否必填
说明
数据标识
_id
文本
待删除的记录数据标识
{
"_id": "16db756f62d7c0870b8caa2a39d33dcb"
}

出参说明

字段名称
字段标识
数据类型
说明
删除的记录条数
deleted
数字
成功删除的记录条数
{
"deleted": 1
}

使用示例

module.exports = async function (params, context) {
const result = await context.callModel({
name: 'example', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看
methodName: 'wedaDelete', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法
params: {
_id: "84f7894263706d0900950bc52687737f"
}, // 数据模型方法的入参
});

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


批量删除 wedaBatchDelete

根据条件删除多条记录。

入参说明

字段名称
字段标识
数据类型
是否必填
说明
查询条件
where
对象数组
匹配的查询条件
字段名称
where[].key
文本
模型字段标识
关系
where[].rel
文本
判断关系。可选值: "eq"表示相等,"neq"表示不相等,"lt"表示小于,"lte"表示小于或等于,"gt"表示大于,"gte"表示大于或等于,"search"表示包含文字内容
where[].val
-
判断值。根据字段类型写入不同的值
{
"where": [
{
"key": "name",
"rel": "eq",
"val": "张三"
}
]
}

出参说明

字段名称
字段标识
数据类型
说明
删除的记录条数
deleted
数字
成功删除的记录条数

使用示例

module.exports = async function (params, context) {
const result = await context.callModel({
name: 'example', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看
methodName: 'wedaBatchDelete', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法
params: {
where: [{
key: "firstname",
rel: "eq", // 可选值有: eq(相等) neq(不相等) lt(小于) lte(小于或等于) gt(大于) gte(大于或等于) search(包含文字内容)
val: "张",
}],
}, // 数据模型方法的入参
});

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


更新 wedaUpdate

更新一条指定数据标识的记录。

入参说明

字段名称
字段标识
数据类型
是否必填
说明
数据标识
_id
文本
待更新记录的数据标识
{
"_id": "16db756f62d7c0870b8caa2a39d33dcb",
"name": "张三",
"age": 15
}

出参说明

字段名称
字段标识
数据类型
说明
新记录的 ID 数组
ids
文本数组
创建成功的数据标识
{
"ids": ["16db756f62d7c0870b8caa2a39d33dcb"]
}

使用示例

module.exports = async function (params, context) {
const result = await context.callModel({
name: 'example', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看
methodName: 'wedaUpdate', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法
params: {
_id: "84f7894263706d0900950bc52687737f", // 需要更新的记录标识
lastname: "黄", // 更新后的值
},
});

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


批量更新 wedaBatchUpdate

根据条件更新多条记录。

入参说明

字段名称
字段标识
数据类型
是否必填
说明
查询条件
where
对象数组
匹配的查询条件
字段名称
where[].key
文本
模型字段标识
关系
where[].rel
文本
判断关系。可选值: "eq"表示相等,"neq"表示不相等,"lt"表示小于,"lte"表示小于或等于,"gt"表示大于,"gte"表示大于或等于,"search"表示包含文字内容
where[].val
-
判断值。根据字段类型写入不同的值
更新数据
record
对象
使用该数据,更新全部匹配条件的记录
{
"where": [
{
"key": "name",
"rel": "eq",
"val": "张三"
}
],
"record": {
"name": "张三",
"age": 12
}
}

出参说明

字段名称
字段标识
数据类型
说明
更新的记录条数
updated
数字
更新成功的数据标识
{
"updated": 1
}

使用示例

匹配 where 条件的记录都更新为 record 的内容。
module.exports = async function (params, context) {
const result = await context.callModel({
name: 'example', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看
methodName: 'wedaBatchUpdate', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法
params: {
record: {
lastname: "黄", // 更新后的值
},
where: [{
key: "firstname",
rel: "eq", // 可选值有: eq(相等) neq(不相等) lt(小于) lte(小于或等于) gt(大于) gte(大于或等于) search(包含文字内容)
val: "张",
}],
},
});

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


查询 wedaGetItem

查询一条指定数据标识的记录。

入参说明

字段名称
字段标识
数据类型
是否必填
说明
查询条件
where
对象数组
匹配的查询条件
字段名称
where[].key
文本
模型字段标识
关系
where[].rel
文本
判断关系。可选值: "eq"表示相等,"neq"表示不相等,"lt"表示小于,"lte"表示小于或等于,"gt"表示大于,"gte"表示大于或等于,"search"表示包含文字内容
where[].val
-
判断值。根据字段类型写入不同的值
{
"where": [
{
"key": "name",
"rel": "eq",
"val": "张三"
}
]
}

出参说明

出参为数据模型字段,例如:name、age 等。
{
"_id": "16db756f62d7c0870b8caa2a39d33dcb",
"name": "张三",
"age": 15
}

使用示例

根据查询条件返回一条匹配的记录。
module.exports = async function (params, context) {
const result = await context.callModel({
name: 'example', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看
methodName: 'wedaGetItem', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法
params: {
_id: "84f7894263706d0900950bc52687737f", // 指定某个具体的数据标识
where: [{ // 或根据指定的条件
key: "firstname",
rel: "eq", // 可选值有: eq(相等) neq(不相等) lt(小于) lte(小于或等于) gt(大于) gte(大于或等于) search(包含文字内容)
val: "张",
}],
},
});

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


查询列表 wedaGetRecords

根据条件以分页列表格式返回多条记录。

入参说明

字段名称
字段标识
数据类型
是否必填
说明
查询条件
where
对象数组
匹配的查询条件
字段名称
where[].key
文本
模型字段标识
关系
where[].rel
文本
判断关系。可选值: "eq"表示相等,"neq"表示不相等,"lt"表示小于,"lte"表示小于或等于,"gt"表示大于,"gte"表示大于或等于,"search"表示包含文字内容
where[].val
-
判断值。根据字段类型写入不同的值
页码
pageNo
数字
从1开始
每页数
pageSize
数字
每次查询的最大记录数,默认为10,如需设置为其它值,需要和 pageNo 配合使用,两者同时指定才会生效
排序字段名称
orderBy
文本
按某个字段进行排序
排序方式
orderType
文本
"desc" 表示降序,"asc"表示升序
{
"where": [
{
"key": "name",
"rel": "eq",
"val": "张三"
}
],
"pageNo": 1,
"pageSize": 20,
"orderBy": "age",
"orderType": "desc",
}

出参说明

字段名称
字段标识
数据类型
说明
记录总条数
total
数字
所有匹配条件的总条数
页码
pageNo
数字
当前页码
每页记录数
pageSize
数字
每次查询的最大记录数
记录列表
records
对象数组
查询的结果列表
{
"records": [
{
"name": "张三",
"age": 2
}
],
"total": 100,
"pageNo": 1,
"pageSize": 20
}

使用示例

根据查询条件分页返回匹配的记录。
module.exports = async function (params, context) {
const result = await context.callModel({
name: 'example', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看
methodName: 'wedaGetRecords', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法
params: {
pageNo: 1,
pageSize: 10,
orderBy: "firstname",
orderType: "desc",
where: [{ // 或根据指定的条件
key: "firstname",
rel: "eq", // 可选值有: eq(相等) neq(不相等) lt(小于) lte(小于或等于) gt(大于) gte(大于或等于) search(包含文字内容)
val: "张",
}],
},
});

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


数据模型方法查询条件 Where

数据模型方法中 where 字段可以支持简单与复杂两种类型的查询条件,请参见 简单与复杂查询