腾讯云微搭低代码开发学习日记(7天 拿证之第四天)

数据模型方法

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

img

说明:

关于如何在编辑器中使用这些方法,请参见 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 字段可以支持简单与复杂两种类型的查询条件

数据模型方法V2

功能描述

调用数据源,包括数据模型及 APIs。

入参

params: ICallDataSourceParams

属性类型默认值必填说明
dataSourceNamestring数据源标识
methodNamestring数据源方法名
paramsobject方法参数,根据方法实际入参填写

如果数据源是数据模型,因为其方法皆由平台提供,其可用的数据源方法(methodName)是:

新增:wedaCreateV2

新增多条:wedaBatchCreateV2

删除:wedaDeleteV2

删除多条:wedaBatchDeleteV2

更新:wedaUpdateV2

更新多条:wedaBatchUpdateV2

查询:wedaGetItemV2

查询多条:wedaGetRecordsV2

方法入参结构及示例

说明

示例数据源 sjmx_ftf41oj 包含名为 name,类型为 string 的字段,包含名为 email,类型为 string 的字段。

enter image description here

新增(wedaCreateV2)

入参结构
属性类型默认值示例必填说明
data{[key: string]: any;}{name: "juli"}对应数据源的字段结构
出参结构
属性类型默认值示例必填说明
idstring"7L5G32U9PE"ID 为对应创建数据源数据对应的标识
Idstring"7L5G32U9PE"ID 为对应创建数据源数据对应的标识(后续废弃
编辑器 Javascript 代码示例

export default async function ({event, data}) {
  try {
    const data = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaCreateV2",
      params: {
        data: {
          email: "bar@weda.io",
          name: "foo",
        },
      },
    });
    console.log("请求结果", data); // {"id": "f8f6930864c11bde006ff6c4662f9bf6"}
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}
添加关联关系

现有数据模型 sjmx_ftf41oj(数据模型),glmx_b2z3oh7(关联模型)。 如果试图在 sjmx_ftf41oj 模型中添加一条数据关联 glmx_b2z3oh7 中的一条数据,数据标识为 62fd7a3664d1e8ba00cc579835a1ded2。

enter image description here

export default async function ({event, data}) {
  try {
    const data = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaCreateV2",
      params: {
        data: {
          email: "bar@weda.io",
          name: "foo",
          relation: "62fd7a3664d1e8ba00cc579835a1ded2"  
        },
      },
    });
    console.log("请求结果", data); // {"id": "f8f6930864c11bde006ff6c4662f9bf6"}
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}

新增多条(wedaBatchCreateV2)

入参结构
属性类型默认值示例必填说明
data{ [key: string]: any }[][{name: "juli"}]不能为空数组,传入空对象会被忽略
出参结构
属性类型默认值示例说明
idListidList: string[]["7L5G32U9PE"]idList 为对应创建数据源数据对应的标识列表
IdListIdList: string[]["7L5G32U9PE"]IdList 为对应创建数据源数据对应的标识列表(后续废弃
编辑器 Javascript 代码示例

export default async function ({event, data}) {
  try {
    const data = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaBatchCreateV2",
      params: {
        data: [
          {
            email: "bar@weda.io",
            name: "foo",
          },
          {
            email: "juli@weda.io",
            name: "juli",
          },
        ],
      },
    });
    console.log("请求结果", data); // {"idList": ["f8f6930864c11fee007010104a2589c4","f8f6930864c11fee0070101171d96063"]}
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}
添加关联关系

现有数据模型 sjmx_ftf41oj(数据模型),glmx_b2z3oh7(关联模型)。 如果试图在 sjmx_ftf41oj 模型中添加多条数据关联 glmx_b2z3oh7 中的多条数据,数据标识为 6243df、76589xf。 例如:foo关联6243df, juli关联76589xf。

export default async function ({event, data}) {
    try {
        const data = await $w.cloud.callDataSource({
            dataSourceName: "sjmx_ftf41oj",
            methodName: "wedaBatchCreateV2",
            params: {
                data: [
                    {
                        email: "bar@weda.io",
                        name: "foo",
                        relation: "6243df",
                    },
                    {
                        email: "juli@weda.io",
                        name: "juli",
                        relation: "76589xf",
                    },
                ],
            },
        });
        console.log("请求结果", data); // {"idList": ["f8f6930864c11fee007010104a2589c4","f8f6930864c11fee0070101171d96063"]}
    } catch (e) {
        console.log("错误代码", e.code, "错误信息", e.message);
    }
}

更新(wedaUpdateV2)

入参结构
属性类型默认值示例必填说明
data{ [key: string]: any }[][{name: "juli"}]不能为空数组,传入空对象会被忽略
filter{ where: FilterObject}{filter: {where: {_id:{$eq:"foo"}}}}不能为空数组,传入空对象会被忽略

说明

FilterObject 为复杂查询结构,请参考查询参数说明。

该方法为单条更新方法,如果使用筛选条件,筛选得到多条数据,则不能用这个方法更新。

出参结构
属性类型默认值示例说明
countcount: 0 or 11变更的条数,返回非 0 值代表更新成功。
CountCount: 0 or 11变更的条数,返回非 0 值代表更新成功。(后续废弃
编辑器 Javascript 代码示例

export default async function ({event, data}) {
  try {
    const data = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaUpdateV2",
      params: {
        // 更新数据
        data: {
          email: "zhangSan@weda.io",
        },
        // 筛选内容,筛选内容推荐使用编辑器数据筛选器生成
        filter: {
          where: {
            $and: [
              {
                _id: {
                  $eq: "4ebb756064c11bc9006e5d2e4f9b73a8", // 更新单条时,推荐传入_id数据标识进行操作
                },
              },
            ],
          },
        },
      },
    });
    console.log("请求结果", data); // { count: 1 }
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}
添加关联关系

现有数据模型 sjmx_ftf41oj(数据模型),glmx_b2z3oh7(关联模型)。 如果试图在 sjmx_ftf41oj 模型中添加一条数据关联 glmx_b2z3oh7 中的一条数据,数据标识为 62fd7a3664d1e8ba00cc579835a1ded2。

enter image description here

export default async function ({event, data}) {
  try {
    const data = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaUpdateV2",
      params: {
        // 更新数据
        data: {
          email: "zhangSan@weda.io",
          relation: "62fd7a3664d1e8ba00cc579835a1ded2",           
        },
        // 筛选内容,筛选内容推荐使用编辑器数据筛选器生成
        filter: {
          where: {
            $and: [
              {
                _id: {
                  $eq: "4ebb756064c11bc9006e5d2e4f9b73a8", // 更新单条时,推荐传入_id数据标识进行操作
                },
              },
            ],
          },
        },
      },
    });
    console.log("请求结果", data); // { count: 1 }
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}

更新多条(wedaBatchUpdateV2)

入参结构
属性类型默认值示例必填说明
data{ [key: string]: any }[][{name: "juli"}]不能为空数组,传入空对象会被忽略
filter{ where: FilterObject}{filter: {where: {}}}复杂查询结构

说明

FilterObject 为复杂查询结构,请参考查询参数说明。

批量更新一次最多只能更新200条

出参结构
属性类型默认值示例说明
countcount:0 or 11变更的条数,返回非 0 值代表更新成功
CountCount:0 or 11变更的条数,返回非 0 值代表更新成功(后续废弃
编辑器 Javascript 代码示例

export default async function ({event, data}) {
  try {
    const data = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaBatchUpdateV2",
      params: {
        // 更新数据
        data: {
          email: "zhangSan@weda.io",
        },
        // 筛选内容,筛选内容推荐使用编辑器数据筛选器生成
        filter: {
          where: {
            $and: [
              {
                name: {
                  $eq: "juli",
                },
              },
            ],
          },
        },
      },
    });
    console.log("请求结果", data); // { count: 3 }
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}
添加关联关系

现有数据模型 sjmx_ftf41oj(数据模型),glmx_b2z3oh7(关联模型)。 如果试图在 sjmx_ftf41oj 模型中添加一条数据关联 glmx_b2z3oh7 中的一条数据,数据标识为 62fd7a3664d1e8ba00cc579835a1ded2。

enter image description here

export default async function ({event, data}) {
  try {
    const data = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaBatchUpdateV2",
      params: {
        // 更新数据
        data: {
          email: "zhangSan@weda.io",
          relation: "62fd7a3664d1e8ba00cc579835a1ded2",           
        },
        // 筛选内容,筛选内容推荐使用编辑器数据筛选器生成
        filter: {
          where: {
            $and: [
              {
                _id: {
                  $eq: "4ebb756064c11bc9006e5d2e4f9b73a8", // 更新单条时,推荐传入_id数据标识进行操作
                },
              },
            ],
          },
        },
      },
    });
    console.log("请求结果", data); // { count: 1 }
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}

删除(wedaDeleteV2)

入参结构
属性类型默认值示例必填说明
filter{ where: FilterObject }{filter: {where: {}}}复杂查询结构

说明

FilterObject 为复杂查询结构,请参考查询参数说明。 数据源筛选条件满足条数为 1 以上进行时进行单条更新会出错。

出参结构
属性类型默认值示例说明
countcount:0 or 11变更的条数,返回非 0 值代表更新成功
CountCount:0 or 11变更的条数,返回非 0 值代表更新成功(后续废弃
编辑器 Javascript 代码示例

export default async function ({event, data}) {
  try {
    const data = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaDeleteV2",
      params: {
        // 筛选内容,筛选内容推荐使用编辑器数据筛选器生成
        filter: {
          where: {
            $and: [
              {
                _id: {
                  $eq: "4ebb756064c11bc9006e5d2e4f9b73a8", // 更新单条时,推荐传入_id数据标识进行操作
                },
              },
            ],
          },
        },
      },
    });
    console.log("请求结果", data); // { count: 1 }
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}

删除多条(wedaBatchDeleteV2)

入参结构
属性类型默认值示例必填说明
filter{ where: FilterObject}{filter: {where: {}}}复杂查询结构

说明

FilterObject 为复杂查询结构,请参考查询参数说明。

批量删除一次最多只能删除200条

出参结构
属性类型默认值示例说明
countcount:0 or 11变更的条数,返回非 0 值代表更新成功
CountCount:0 or 11变更的条数,返回非 0 值代表更新成功(后续废弃
编辑器 Javascript 代码示例

export default async function ({event, data}) {
  try {
    const data = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaBatchDeleteV2",
      params: {
        // 筛选内容,筛选内容推荐使用编辑器数据筛选器生成
        filter: {
          where: {
            $and: [
              {
                name: {
                  $eq: "juli", // 更新单条时,推荐传入_id数据标识进行操作
                },
              },
            ],
          },
        },
      },
    });
    console.log("请求结果", data); // { count: 3 }
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}

查询(wedaGetItemV2)

入参结构
属性类型默认值示例必填说明
filter{ where: FilterObject}{filter: {where: {}}}复杂查询结构
select{ [key: string]: boolean }{ $master: true }可以指定返回本表或者关联表的字段,如果想查询本表所有字段,请使用 { $master: true }

说明

FilterObject 为复杂查询结构,请参考查询参数说明。

出参结构
属性类型默认值示例说明
对应数据源字段结构{ [key: string]: any }{ name: "juli" }返回满足筛选条件的数据源详情
编辑器 Javascript 代码示例:

export default async function ({event, data}) {
  try {
    const data = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaGetItemV2",
      params: {
        // 筛选内容,筛选内容推荐使用编辑器数据筛选器生成
        filter: {
          where: {
            $and: [
              {
                _id: {
                  $eq: "f8f6930864c11fee007010104a2589c4", // 获取单条时,推荐传入_id数据标识进行操作
                },
              },
            ],
          },
        },
        select: {
          $master: true, // 常见的配置,返回主表
        },
      },
    });
    console.log("请求结果", data); // "{"owner":"1559148626461061122","createdAt":1690378222467,"createBy":"1559148626461061122","updateBy":"1559148626461061122","name":"foo","_id":"f8f6930864c11fee007010104a2589c4","email":"bar@weda.io","updatedAt":1690378222467}"
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}

查询多条(wedaGetRecordsV2)

入参结构
属性类型默认值必填说明
filter{ where: FilterObject}复杂查询结构
select{ [key: string]: boolean }{ $master: true } 可以指定返回本表或者关联表的字段,如果想查询本表所有字段,请使用 { $master: true }
getCountbooleanfalse获取 filter 命中条件的查询条数
pageSizenumber10分页大小,建议指定,如需设置为其它值,需要和 pageNo 配合使用,两者同时指定才会生效
pageNumbernumber1分页数目
orderBy{[key: string]: "acs" "desc" }[]排序,当前仅支持最多 3 字段排序
compatibleWithV1booleanfalse对旧关联关系的兼容,下面详细介绍

说明

请不要依赖协议中任何的默认值。

对于 orderBy 的排序,在默认情况下以底层数据库查询结果为准,不存在新建数据一定会排在最前的情况。

查询请求单次最大仅支持200条

如何获取新创建的第一条数据

设置排序条件为创建时间字段降序排序,每页条数为1,页码为1,终查询结果中,取records[0]中的数据 出参结构:

属性类型默认值示例说明
records{ [key: string]: any }[]{ name: "juli" }records 内的数组为对应的数据源数据对象
totalnumber1入参配置了 getCount 为 true 时会返回满足筛选查询条件的大小,注意,此字段不代表返回 records 的长度,可以用作页面大小的计算。当 getCount 为 false 的时候,不应该对此值做任何期待
编辑器 Javascript 代码示例

export default async function ({event, data}) {
  try {
    const data = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaGetRecordsV2",
      params: {
        // 排序
        orderBy: [
          {
            createdAt: "desc", // 创建时间,倒序
          },
        ],
        // 返回total字段
        getCount: true,
        // 页面大小
        pageSize: 1,
        // 当前页面
        pageNumber: 1,
      },
    });
    console.log("请求结果", data); // "{"records":[{"owner":"1559148626461061122","createdAt":1690378222467,"createBy":"1559148626461061122","updateBy":"1559148626461061122","name":"foo","_id":"f8f6930864c11fee007010104a2589c4","email":"bar@weda.io","updatedAt":1690378222467}],"total":1}"
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}
select 详解

select 主要用来帮助手动筛选字段。通过设置 select,可以对筛选的结果进行选择。 假设存在主模型 student 有字段 _id, name,age,relateSchool(旧关联关系),newRelateSchool(新关联关系-多对一)。 假设存在关联模型 school 有字段 _id,school_name,school_address。 主模型 student 通过关联字段 relateSchool 和关联模型 school建立关联。即 relateSchool 字段 存取了 school 表某条数据的 _id 值。

说明

因为一些内部调整原因。将关联关系字段和主子明细字段作为 关联关系(旧)字段。其返回关联数据的方式通过特殊前缀@的方式进行返回。

对于新关联关系,则是以关联关系字段本身作为返回。

筛选主模型(当前模型)字段。

export default async function ({event, data}) {
    try {
        const data = await $w.cloud.callDataSource({
            dataSourceName: "student",
            methodName: "wedaGetRecordsV2",
            params: {
                // 返回字段选择
                select: {
                    name: true, 
                    age: true
                },
                // 返回total字段
                getCount: true,
                // 页面大小
                pageSize: 10,
                // 当前页面
                pageNumber: 1,
            },
        });
        console.log("请求结果", data); 
    } catch (e) {
        console.log("错误代码", e.code, "错误信息", e.message);
    }
}

筛选关联模型字段,筛选旧关联关系。

export default async function ({event, data}) {
    try {
        const data = await $w.cloud.callDataSource({
            dataSourceName: "relateSchool",
            methodName: "wedaGetRecordsV2",
            params: {
                // 返回字段选择
                select: {
                    name: true, 
                    age: true,
                    relateSchool: true
                },
                // 返回total字段
                getCount: true,
                // 页面大小
                pageSize: 10,
                // 当前页面
                pageNumber: 1,
            },
        });
        console.log("请求结果", data); 
    } catch (e) {
        console.log("错误代码", e.code, "错误信息", e.message);
    }
}

此时只会返回关联的 school 表中 _id 值。如果想返回更多的关联数据。

export default async function ({event, data}) {
    try {
        const data = await $w.cloud.callDataSource({
            dataSourceName: "relateSchool",
            methodName: "wedaGetRecordsV2",
            params: {
                // 返回字段选择
                select: {
                    name: true, 
                    age: true,
                    relateSchool: true
                },
                // 返回total字段
                getCount: true,
                // 页面大小
                pageSize: 10,
                // 当前页面
                pageNumber: 1,
                // 是否兼容V1协议
                compatibleWithV1: true,
            },
        });
        console.log("请求结果", data); 
    } catch (e) {
        console.log("错误代码", e.code, "错误信息", e.message);
    }
}

示例返回值如下:

{
    "records":[
        {
            "relateSchool":"7EZPN3F128",
            "name":"xiaoming",
            "_id":"7EZPN3F3ZS",
            "age":12,
            "@relateSchool":{
                "v1":{
                    "primaryColumn":"name",
                    "record":{
                        "_id": "7EZPN3F128",
                        "school_name":"WeDa小学",
                        "school_address": "西红市光明路"
                    }
                }
            }
        }
    ],
    "total":3
}

筛选关联模型字段,筛选新关联关系(多对一)。

export default async function ({event, data}) {
    try {
        const data = await $w.cloud.callDataSource({
            dataSourceName: "relateSchool",
            methodName: "wedaGetRecordsV2",
            params: {
                // 返回字段选择
                select: {
                    name: true, 
                    age: true,
                    newRelateSchool: {school_name: true}
                },
                // 返回total字段
                getCount: true,
                // 页面大小
                pageSize: 10,
                // 当前页面
                pageNumber: 1,
            },
        });
        console.log("请求结果", data); 
    } catch (e) {
        console.log("错误代码", e.code, "错误信息", e.message);
    }
}

示例返回值如下:

{
  "records":[
    {
      "name":"xiaoming",
      "_id":"7EZPN3F3ZS",
      "age":12,
      "newRelateSchool":{
        "_id":"7EZPN3F128",
        "school_name":"WeDa小学"
      }
    }
  ],
  "total":3
}

说明

对于关联字段,即使没有查询 _id 字段,也会返回。

compatibleWithV1详解

本开关用于返回对关联关系(旧)的关联数据返回,并以 @ 符号返回。 示例返回值如下:

{
    "records":[
        {
            "relateSchool":"7EZPN3F128",
            "name":"xiaoming",
            "_id":"7EZPN3F3ZS",
            "age":12,
            "@relateSchool":{
                "v1":{
                    "primaryColumn":"name",
                    "record":{
                        "_id": "7EZPN3F128",
                        "school_name":"WeDa小学",
                        "school_address": "西红市光明路"
                    }
                }
            }
        }
    ],
    "total":3
}

如果设置为 compatibleWithV1:false 后。

{
    "records":[
        {
            "relateSchool":"7EZPN3F128",
            "name":"xiaoming",
            "_id":"7EZPN3F3ZS",
            "age":12
        }
    ],
    "total":3
}

将不会返回额外的关联字段。

说明

因为一些内部调整原因。将关联关系字段和主子明细字段作为关联关系(旧)字段。其返回关联数据的方式通过特殊前缀 @ 的方式进行返回。

出参结构
属性类型默认值示例说明
records{ [key: string]: any }[]{ name: "juli" }records 内的数组为对应的数据源数据对象
totalnumber3入参配置了 getCount 为 true 时会返回满足筛选查询条件的大小,注意,此字段不代表返回 records 的长度,可以用作页面大小的计算。当 getCount 为 false 的时候,不应该对此值做任何期待
编辑器 Javascript 代码示例:

export default async function ({event, data}) {
  try {
    const data = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaGetRecordsV2",
      params: {
        // 筛选内容,当前筛选的含义为:名字为 "juli" 或者 "foo"
        filter: {
          where: {
            $or: [
              {
                name: {
                  $eq: "juli",
                },
              },
              {
                name: {
                  $eq: "foo",
                },
              },
            ],
          },
        },
        // 排序
        orderBy: [
          {
            createdAt: "asc", // 创建时间,正序
          },
          {
            updateBy: "desc", // 更新时间,倒序
          },
        ],
        // 返回字段选择
        select: {
          $master: true, // 常见的配置,返回主表
        },
        // 返回total字段
        getCount: true,
        // 页面大小
        pageSize: 10,
        // 当前页面
        pageNumber: 1,
      },
    });
    console.log("请求结果", data); // "{"records":[{"owner":"1559148626461061122","createdAt":1690378222467,"createBy":"1559148626461061122","updateBy":"1559148626461061122","name":"foo","_id":"f8f6930864c11fee007010104a2589c4","email":"bar@weda.io","updatedAt":1690378222467},{"owner":"1559148626461061122","createdAt":1690382002594,"createBy":"1559148626461061122","updateBy":"1559148626461061122","name":"juli","_id":"f95d024c64c12eb2006fd51d38654e28","email":"juli@weda.io","updatedAt":1690382002594}],"total":2}"
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}

查询参数说明

逻辑运算符

名称描述
$and使用逻辑 and 连接字段,返回与这两个字段条件匹配的数据
$or使用逻辑 or 连接字段,返回与任一个字段条件匹配的数据

示例1:

{
  "$and": [
    {
      "key": {
        "$eq": "val"
      }
    }
  ]
}

示例2:

{
  "$or": [
    {
      "$and": [
        {
          "key": {
            "$eq": "val"
          }
        },
        {
          "key2": {
            "$neq": 3
          }
        }
      ]
    },
    {
      "key3": {
        "$eq": 0
      }
    }
  ]
}

比较运算符

名称描述适用类型
$eq匹配等于指定值的值字符串,布尔值,数字
$neq匹配所有不等于指定值的值字符串,布尔值,数字
$gt匹配大于指定值的值数字
$gte匹配大于或等于指定值的值数字
$lt匹配小于指定值的值数字
$lte匹配小于或等于指定值的值数字
$in匹配数组中指定的任何值数组
$nin不匹配数组中指定的任何值数组

示例1:

{
  "$and": [
    {
      "key": {
        "$eq": "val"
      }
    }
  ]
}

示例2:

{
  "$and": [
    {
      "key1": {
        "$in": [
          "foo",
          "bar"
        ]
      }
    },
    {
      "key2": {
        "$in": [
          1,
          2
        ]
      }
    }
  ]
}

特殊运算符

名称描述适用类型说明
$search模糊查询字符串性能较差,尽量避免使用
$nsearch不包含,会把 null 值查找出来字符串性能较差,尽量避免使用
$eq-current-user等于当前用户字符串-
$ne-current-user不等于当前用户字符串-
$empty数据为 null任意类型-
$nempty数据不为 null任意类型-

示例1:

{
	"$and": [{
		"key": {
			"$search": "val"
		}
	}]
}

示例2:

{
    "$and": [{
        "key": {
            "$nsearch": "val"
        }
    }]
}

示例3:

{
    "$and": [{
        "key": {
            "eq-current-user": "val"
        }
    }]
}

示例4:

{
    "$and": [{
        "key": {
            "ne-current-user": "val"
        }
    }]
}

示例5:

{
    "$and": [{
        "key": {
            "$empty": 1
        }
    }]
}

示例6:

{
    "$and": [{
        "key": {
            "$nempty": 1
        }
    }]
}

说明

$empty$empty 在 mongo 中,会查询字段不存在和字段值为 null 的两种情况。

常见错误说明

标识[xxx]必填参数未填

xxx 字段被设置未必填属性时,如果参数的值没取到,就会出现这个错误。一般在返回的错误里有 errRecord 字段。例如 errRecord:{"foo":"bar"} 。 可以看到 errRecord 中不存在 xxx 字段。所以必填校验失败

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于宜腾讯云的具体产品动态,我了解到以下一些方面的持续更新和增强: 宜: 1. 新增组件和模板:宜不断推出新的组件和模板,以满足不同应用场景的需求。这些组件和模板包括常用的UI控件、数据展示和处理组件等,使开发者能够更快速地构建应用程序。 2. 功能优化和性能提升:宜致力于持续改进平台的功能和性能。他们会根据用户反馈和需求,进行功能优化和性能提升,以提供更流畅、稳定的开发体验。 3. 拖拽式编辑器改进:宜的拖拽式编辑器是其核心特点之一,他们不断改进编辑器的易用性和功能性。例如,优化布局、增加交互效果、提供更多样式选项等,使开发者能够更方便地调整和定制应用程序界面。 腾讯云: 1. 集成能力增强:腾讯云不断增强与其他腾讯云服务的集成能力。他们会推出新的集成组件或功能,使开发者能够更轻松地与云函数、云数据库等腾讯云服务进行集成,实现更复杂的业务逻辑。 2. 性能优化和稳定性改进:腾讯云致力于提供高性能和稳定的开发平台。他们会通过优化底层架构、增加资源容量等方式,提升平台的性能和稳定性,以确保开发者能够顺畅地进行应用程序开发。 3. 新功能推出:腾讯云持续推出新的功能和特性,以满足不断变化的用户需求。这些新功能可能包括新的组件、新的开发工具、新的应用模板等,使开发者能够更灵活地构建应用程序。 请注意,以上是根据我所了解到的信息,可能不是最新的产品动态。具体的产品动态还需参考宜腾讯云官方网站或相关媒体渠道获取最新信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值