腾讯云微搭低代码的数据源提供了数据模型,开发者可以使用 
context.callModel
方法来操作数据模型,具体模型方法包括:新增 wedaCreate、新增多条 wedaBatchCreate、删除 wedaDelete、批量删除 wedaBatchDelete、更新 wedaUpdate、批量更新 wedaBatchUpdate、查询 wedaGetItem、查询列表 wedaGetRecords。
本文以如下数据模型为例,说明数据模型方法的使用,示例代码为 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;};