From adbd43aca1508f75b9de27de636d67c7c4bd906e Mon Sep 17 00:00:00 2001 From: binggchen <141918726+binggchen@users.noreply.github.com> Date: Fri, 25 Aug 2023 15:09:24 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E6=95=B0=E6=8D=AE=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=96=B9=E6=B3=95V2.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\345\236\213\346\226\271\346\263\225V2.md" | 458 +++++++++++++++--- 1 file changed, 382 insertions(+), 76 deletions(-) diff --git "a/product/\347\247\273\345\212\250\344\270\216\351\200\232\344\277\241/\344\272\221\345\274\200\345\217\221\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260/\344\272\247\345\223\201\347\256\200\344\273\213/\346\225\260\346\215\256\346\272\220/\346\225\260\346\215\256\346\250\241\345\236\213/\346\225\260\346\215\256\346\250\241\345\236\213\346\226\271\346\263\225V2.md" "b/product/\347\247\273\345\212\250\344\270\216\351\200\232\344\277\241/\344\272\221\345\274\200\345\217\221\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260/\344\272\247\345\223\201\347\256\200\344\273\213/\346\225\260\346\215\256\346\272\220/\346\225\260\346\215\256\346\250\241\345\236\213/\346\225\260\346\215\256\346\250\241\345\236\213\346\226\271\346\263\225V2.md" index e7838a5ad169..178b80ec23eb 100644 --- "a/product/\347\247\273\345\212\250\344\270\216\351\200\232\344\277\241/\344\272\221\345\274\200\345\217\221\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260/\344\272\247\345\223\201\347\256\200\344\273\213/\346\225\260\346\215\256\346\272\220/\346\225\260\346\215\256\346\250\241\345\236\213/\346\225\260\346\215\256\346\250\241\345\236\213\346\226\271\346\263\225V2.md" +++ "b/product/\347\247\273\345\212\250\344\270\216\351\200\232\344\277\241/\344\272\221\345\274\200\345\217\221\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260/\344\272\247\345\223\201\347\256\200\344\273\213/\346\225\260\346\215\256\346\272\220/\346\225\260\346\215\256\346\250\241\345\236\213/\346\225\260\346\215\256\346\250\241\345\236\213\346\226\271\346\263\225V2.md" @@ -1,16 +1,19 @@ -开发者可以使用 `$w.cloud.callDataSource` 方法来调用数据源,包括数据模型及 APIs。 +## 功能描述 +调用数据源,包括数据模型及 APIs ## 入参 + ### params: ICallDataSourceParams -| 属性 | 类型 | 必填 | 说明 | -|:--------------:|:------:|:--:|:---------------:| -| dataSourceName | string | 是 | 数据源标识 | -| methodName | string | 是 | 数据源方法名 | -| params | object | 是 | 方法参数,根据方法实际入参填写 | +| 属性 | 类型 | 默认值 | 必填 | 说明 | +|:--------------:|:------:|:---:|:--:|:---------------:| +| dataSourceName | string | 无 | 是 | 数据源标识 | +| methodName | string | 无 | 是 | 数据源方法名 | +| params | object | 无 | 是 | 方法参数,根据方法实际入参填写 | 如果数据源是数据模型,因为其方法皆由平台提供,其可用的数据源方法(methodName)是: + - 新增:`wedaCreateV2` - 新增多条:`wedaBatchCreateV2` - 删除:`wedaDeleteV2` @@ -21,26 +24,28 @@ - 查询多条:`wedaGetRecordsV2` ## 方法入参结构及示例 ->? 示例数据源 `sjmx_ftf41oj` 包含 名为 `name`,类型为 `string` 的字段,包含名为 `email`,类型为 `string` 的字段。 -![](https://qcloudimg.tencent-cloud.cn/raw/d2fb253d805a62b4b9286df95ef31649.png) +> 示例数据源 `sjmx_ftf41oj` 包含 名为 `name`,类型为 `string` 的字段,包含名为 `email`,类型为 `string` 的字段 + +![enter image description here](https://qcloudimg.tencent-cloud.cn/raw/d2fb253d805a62b4b9286df95ef31649.png) ### 新增(wedaCreateV2) -#### 入参结构 +入参结构 | 属性 | 类型 | 默认值 | 示例 | 必填 | 说明 | |:----:|:-------------------------:|:---:|:----------------:|:--:|:----------:| | data | `{ [key: string]: any; }` | 无 | `{name: "juli"}` | 是 | 对应数据源的字段结构 | -#### 出参结构 +出参结构 | 属性 | 类型 | 默认值 | 示例 | 必填 | 说明 | |:--:|:---------:|:---:|:--------------:|:--:|:--------------------:| | id | `string ` | 无 | `"7L5G32U9PE"` | 是 | `id` 为对应创建数据源数据对应的标识 | | ~~Id~~ | `string ` | 无 | `"7L5G32U9PE"` | 是 | `Id` 为对应创建数据源数据对应的标识(`后续废弃`) | -#### 编辑器 Javascript 代码示例 +编辑器 Javascript 代码示例 + ```js export default async function ({event, data}) { try { @@ -63,9 +68,13 @@ export default async function ({event, data}) { #### 添加关联关系 -现有数据模型 sjmx_ftf41oj(数据模型),glmx_b2z3oh7(关联模型)。 -如果试图在 sjmx_ftf41oj 模型中添加一条数据关联 glmx_b2z3oh7 中的一条数据,数据标识为 62fd7a3664d1e8ba00cc579835a1ded2。 -![](https://qcloudimg.tencent-cloud.cn/raw/d215b5a13e96c6d4c06ae46bba0a8b6d.png) +现有数据模型 sjmx_ftf41oj(数据模型), glmx_b2z3oh7(关联模型) + +如果试图在sjmx_ftf41oj模型中添加一条数据关联glmx_b2z3oh7中的一条数据,数据标识为62fd7a3664d1e8ba00cc579835a1ded2 + +![enter image description here](https://qcloudimg.tencent-cloud.cn/raw/d215b5a13e96c6d4c06ae46bba0a8b6d.png) + + ```js export default async function ({event, data}) { try { @@ -88,20 +97,22 @@ export default async function ({event, data}) { ``` ### 新增多条(wedaBatchCreateV2) -#### 入参结构 + +入参结构 | 属性 | 类型 | 默认值 | 示例 | 必填 | 说明 | |:----:|:--------------------------:|:---:|:------------------:|:--:|:-----------------:| -| data | `{ [key: string]: any }[]` | 无 | `[{name: "juli"}]` | 是 | 不能为空数组,传入空对象会被忽略 | +| data | `{ [key: string]: any }[]` | 无 | `[{name: "juli"}]` | 是 | 不能为空数组, 传入空对象会被忽略 | -#### 出参结构 +出参结构 | 属性 | 类型 | 默认值 | 示例 | 说明 | |:------:|:------------------:|:---:|:----------------:|:--------------------------:| | idList | `idList: string[]` | 无 | `["7L5G32U9PE"]` | `idList` 为对应创建数据源数据对应的标识列表 | -| ~~IdList~~ | `IdList: string[]` | 无 | `["7L5G32U9PE"]` | `IdList` 为对应创建数据源数据对应的标识列表(`后续废弃`) | +| ~~IdList~~ | `IdList: string[]` | 无 | `["7L5G32U9PE"]` | `IdList` 为对应创建数据源数据对应的标识列表(`后续废弃`) | + +编辑器 Javascript 代码示例 -#### 编辑器 Javascript 代码示例 ```js export default async function ({event, data}) { try { @@ -130,9 +141,10 @@ export default async function ({event, data}) { #### 添加关联关系 -现有数据模型 sjmx_ftf41oj(数据模型),glmx_b2z3oh7(关联模型)。 -如果试图在 sjmx_ftf41oj 模型中添加多条数据关联 glmx_b2z3oh7 中的多条数据,数据标识为6243df、76589xf。 -例如:foo 关联6243df, juli 关联76589xf。 +现有数据模型 sjmx_ftf41oj(数据模型), glmx_b2z3oh7(关联模型) + +如果试图在sjmx_ftf41oj模型中添加多条数据关联glmx_b2z3oh7中的多条数据,数据标识为 6243df, 76589xf +比如:foo关联6243df, juli关联76589xf ```js export default async function ({event, data}) { @@ -164,25 +176,25 @@ export default async function ({event, data}) { ### 更新(wedaUpdateV2) -#### 入参结构 +入参结构 | 属性 | 类型 | 默认值 | 示例 | 必填 | 说明 | |:------:|:--------------------------:|:---:|:--------------------------------------:|:--:|:-----------------:| -| data | `{ [key: string]: any }[]` | 无 | `[{name: "juli"}]` | 是 | 不能为空数组,传入空对象会被忽略 | -| filter | `{ where: FilterObject}]` | 无 | `{filter: {where: {_id:{$eq:"foo"}}}}` | 是 | 不能为空数组,传入空对象会被忽略 | +| data | `{ [key: string]: any }[]` | 无 | `[{name: "juli"}]` | 是 | 不能为空数组, 传入空对象会被忽略 | +| filter | `{ where: FilterObject}]` | 无 | `{filter: {where: {_id:{$eq:"foo"}}}}` | 是 | 不能为空数组, 传入空对象会被忽略 | ->? ->- `FilterObject` 为复杂查询结构,请参考查询参数说明。 ->- 数据源筛选条件满足条数为 1 以上进行时进行单条更新会出错 +> `FilterObject` 为复杂查询结构,请参考查询参数说明 +> +> 数据源筛选条件满足条数为 1 以上进行时进行单条更新会出错 -#### 出参结构 +出参结构 | 属性 | 类型 | 默认值 | 示例 | 说明 | |:-----:|:---------------:|:---:|:---:|:--------------------:| | count | `count: 0 or 1` | 无 | `1` | 变更的条数,返回非 0 值代表更新成功。 | | ~~Count~~ | `Count: 0 or 1` | 无 | `1` | 变更的条数,返回非 0 值代表更新成功。(`后续废弃`) | -#### 编辑器 Javascript 代码示例 +编辑器 Javascript 代码示例 ```js export default async function ({event, data}) { @@ -218,10 +230,14 @@ export default async function ({event, data}) { #### 添加关联关系 -现有数据模型 sjmx_ftf41oj(数据模型),glmx_b2z3oh7(关联模型)。 -如果试图在 sjmx_ftf41oj 模型中添加一条数据关联 glmx_b2z3oh7 中的一条数据,数据标识为62fd7a3664d1e8ba00cc579835a1ded2。 +现有数据模型 sjmx_ftf41oj(数据模型), glmx_b2z3oh7(关联模型) + +如果试图在sjmx_ftf41oj模型中添加一条数据关联glmx_b2z3oh7中的一条数据,数据标识为62fd7a3664d1e8ba00cc579835a1ded2 + ![enter image description here](https://qcloudimg.tencent-cloud.cn/raw/d215b5a13e96c6d4c06ae46bba0a8b6d.png) + + ```js export default async function ({event, data}) { try { @@ -257,23 +273,25 @@ export default async function ({event, data}) { ### 更新多条(wedaBatchUpdateV2) -#### 入参结构 +入参结构 | 属性 | 类型 | 默认值 | 示例 | 必填 | 说明 | |:------:|:--------------------------:|:---:|:-----------------------:|:--:|:-----------------:| -| data | `{ [key: string]: any }[]` | 无 | `[{name: "juli"}]` | 是 | 不能为空数组,传入空对象会被忽略 | +| data | `{ [key: string]: any }[]` | 无 | `[{name: "juli"}]` | 是 | 不能为空数组, 传入空对象会被忽略 | | filter | `{ where: FilterObject}]` | 无 | `{filter: {where: {}}}` | 是 | 复杂查询结构 | ->? FilterObject 为复杂查询结构,请参考查询参数说明。 +> FilterObject 为复杂查询结构,请参考查询参数说明 +> +> 批量更新一次最多只能更新200条 -#### 出参结构 +出参结构 | 属性 | 类型 | 默认值 | 示例 | 说明 | |:-----:|:---------------:|:---:|:---:|:-------------------:| | count | `count: 0 or 1` | 无 | `1` | 变更的条数,返回非 0 值代表更新成功 | | ~~Count~~ | `Count: 0 or 1` | 无 | `1` | 变更的条数,返回非 0 值代表更新成功(`后续废弃`) | -#### 编辑器 Javascript 代码示例 +编辑器 Javascript 代码示例 ```js export default async function ({event, data}) { @@ -309,9 +327,14 @@ export default async function ({event, data}) { #### 添加关联关系 -现有数据模型 sjmx_ftf41oj(数据模型),glmx_b2z3oh7(关联模型)。 -如果试图在 sjmx_ftf41oj 模型中添加一条数据关联 glmx_b2z3oh7 中的一条数据,数据标识为62fd7a3664d1e8ba00cc579835a1ded2。 -![](https://qcloudimg.tencent-cloud.cn/raw/d215b5a13e96c6d4c06ae46bba0a8b6d.png) +现有数据模型 sjmx_ftf41oj(数据模型), glmx_b2z3oh7(关联模型) + +如果试图在sjmx_ftf41oj模型中添加一条数据关联glmx_b2z3oh7中的一条数据,数据标识为62fd7a3664d1e8ba00cc579835a1ded2 + +![enter image description here](https://qcloudimg.tencent-cloud.cn/raw/d215b5a13e96c6d4c06ae46bba0a8b6d.png) + + + ```js export default async function ({event, data}) { try { @@ -345,26 +368,27 @@ export default async function ({event, data}) { } ``` + ### 删除(wedaDeleteV2) -#### 入参结构 +入参结构 | 属性 | 类型 | 默认值 | 示例 | 必填 | 说明 | |:------:|:--------------------------:|:---:|:-----------------------:|:--:|:------:| | filter | `{ where: FilterObject }]` | 无 | `{filter: {where: {}}}` | 是 | 复杂查询结构 | ->? ->- `FilterObject` 为复杂查询结构,请参考查询参数说明。 ->- 数据源筛选条件满足条数为 1 以上进行时进行单条更新会出错。 +> `FilterObject` 为复杂查询结构,请参考查询参数说明 +> +> 数据源筛选条件满足条数为 1 以上进行时进行单条更新会出错 -#### 出参结构 +出参结构 | 属性 | 类型 | 默认值 | 示例 | 说明 | |:-----:|:---------------:|:---:|:---:|:-------------------:| | count | `count: 0 or 1` | 无 | `1` | 变更的条数,返回非 0 值代表更新成功 | | ~~Count~~ | `Count: 0 or 1` | 无 | `1` | 变更的条数,返回非 0 值代表更新成功(`后续废弃`) | -#### 编辑器 Javascript 代码示例 +编辑器 Javascript 代码示例 ```js export default async function ({event, data}) { @@ -396,22 +420,24 @@ export default async function ({event, data}) { ### 删除多条(wedaBatchDeleteV2) -#### 入参结构 +入参结构 | 属性 | 类型 | 默认值 | 示例 | 必填 | 说明 | |:------:|:-------------------------:|:---:|:-----------------------:|:--:|:----------:| | filter | `{ where: FilterObject}]` | 无 | `{filter: {where: {}}}` | 是 | 复杂查询结构 | ->? `FilterObject` 为复杂查询结构,请参考查询参数说明。 +> `FilterObject` 为复杂查询结构,请参考查询参数说明 +> +> 批量删除一次最多只能删除200条 -#### 出参结构 +出参结构 | 属性 | 类型 | 默认值 | 示例 | 说明 | |:-----:|:---------------:|:---:|:---:|:-------------------:| | count | `count: 0 or 1` | 无 | `1` | 变更的条数,返回非 0 值代表更新成功 | | ~~Count~~ | `Count: 0 or 1` | 无 | `1` | 变更的条数,返回非 0 值代表更新成功(`后续废弃`) | -#### 编辑器 Javascript 代码示例 +编辑器 Javascript 代码示例 ```js export default async function ({event, data}) { @@ -443,22 +469,22 @@ export default async function ({event, data}) { ### 查询(wedaGetItemV2) -#### 入参结构 +入参结构 | 属性 | 类型 | 默认值 | 示例 | 必填 | 说明 | |:------:|:----------------------------:|:---:|:-----------------------:|:--:|:----------------------------------------------------:| | filter | `{ where: FilterObject}]` | 无 | `{filter: {where: {}}}` | 是 | 复杂查询结构 | | select | `{ [key: string]: boolean }` | 无 | `{ $master: true }` | 是 | 可以指定返回本表或者关联表的字段,如果想查询本表所有字段,请使用 `{ $master: true }` | ->? `FilterObject` 为复杂查询结构,请参考查询参数说明。 +> `FilterObject` 为复杂查询结构,请参考查询参数说明 -#### 出参结构 +出参结构 | 属性 | 类型 | 默认值 | 示例 | 说明 | |:---------:|:------------------------:|:---:|:-------------------:|:--------------:| | 对应数据源字段结构 | `{ [key: string]: any }` | 无 | `{ name: "juli" }` | 返回满足筛选条件的数据源详情 | -#### 编辑器 Javascript 代码示例 +编辑器 Javascript 代码示例 ```js export default async function ({event, data}) { @@ -493,25 +519,304 @@ export default async function ({event, data}) { ### 查询多条(wedaGetRecordsV2) -#### 入参结构 +入参结构 | 属性 | 类型 | 默认值 | 必填 | 说明 | |:----------:|:----------------------------:|:-----------:|:-------------------:|:-------------------:| -| `filter` | `{ where: FilterObject}]` | 无 | 是 | 复杂查询结构 | -| `select` | `{ [key: string]: boolean }` | 无 | `{ $master: true }` | 是 | 可以指定返回本表或者关联表的字段,如果想查询本表所有字段,请使用 `{ $master: true }` | +| filter | `{ where: FilterObject}]` | 无 | 是 | 复杂查询结构 | +| select | `{ [key: string]: boolean }` | 无 | 是 | `{ $master: true }` 可以指定返回本表或者关联表的字段,如果想查询本表所有字段,请使用 `{ $master: true }` | | getCount | `boolean` | `false` | 否 | 获取 filter 命中条件的查询条数 | -| pageSize | `number` | 10 | 否 | 分页大小,建议指定,如需设置为其它值,需要和 pageNo 配合使用,两者同时指定才会生效 | +| pageSize | `number` | 10 | 否 | 分页大小,建议指定,如需设置为其它值,需要和pageNo配合使用,两者同时指定才会生效 | | pageNumber | `number` | 1 | 否 | 分页数目 | -| orderBy | `{[key: string]: "acs" | "desc" }[]` | 无 | 否 | 排序,当前仅支持最多 3 字段排序 | +| orderBy | `{[key: string]: "acs" "desc" }[]` | 无 | 否 | 排序,当前仅支持最多 3 字段排序 | +| compatibleWithV1 | `boolean` | false | 否 | 对旧关联关系的兼容,下面详细介绍 | + +> 请不要依赖协议中任何的默认值。 +> +> 对于`orderBy`的排序,在默认情况下以底层数据库查询结果为准,不存在新建数据一定会排在最前的情况。 +> +> 查询请求单次最大仅支持200条 + +#### 如何获取最新的一条数据 -#### 出参结构 +设置排序条件为创建时间字段降序排序,每页条数为1,页码为1,终查询结果中,取records[0]中的数据 + +出参结构 | 属性 | 类型 | 默认值 | 示例 | 说明 | |:---------:|:--------------------------:|:---:|:-------------------:|:----------------------------------------------------------------------------------------------------------------:| -| `records` | `{ [key: string]: any }[]` | 无 | `{ name: "juli" }` | records 内的数组为对应的数据源数据对象 | -| `total` | `number` | 无 | `3` | 入参配置了 `getCount` 为 `true` 时会返回满足筛选查询条件的大小,注意,此字段不代表返回 records 的长度,可以用作页面大小的计算。当 `getCount` 为 `false` 的时候,不应该对此值做任何期待 | +| `records` | `{ [key: string]: any }[]` | 无 | `{ name: "juli" }` | records 内的数组为对应的数据源数据对象 | +| `total` | `number` | 无 | `1` | 入参配置了 `getCount` 为 `true` 时会返回满足筛选查询条件的大小,注意,此字段不代表返回 records 的长度,可以用作页面大小的计算。当`getCount`为`false`的时候,不应该对此值做任何期待 | + +编辑器 Javascript 代码示例 + +```js +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`值。 + +> 解释说明: +> +> 因为一些内部调整原因。将关联关系字段和主子明细字段作为 关联关系(旧)字段。其返回关联数据的方式通过特殊前缀`@`的方式进行返回。 +> +> 对于新关联关系,则是以关联关系字段本身作为返回。 + + +筛选主模型(当前模型)字段。 +```js +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); + } +} +``` + +筛选关联模型字段,筛选旧关联关系。 +```js +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`值。 + +如果想返回更多的关联数据。 +```js +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); + } +} +``` + +示例返回值如下 +```json +{ + "records":[ + { + "relateSchool":"7EZPN3F128", + "name":"xiaoming", + "_id":"7EZPN3F3ZS", + "age":12, + "@relateSchool":{ + "v1":{ + "primaryColumn":"name", + "record":{ + "_id": "7EZPN3F128", + "school_name":"WeDa小学", + "school_address": "西红市光明路" + } + } + } + } + ], + "total":3 +} + +``` + + +筛选关联模型字段,筛选新关联关系(多对一)。 +```js +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); + } +} +``` + +示例返回值如下 +```json +{ + "records":[ + { + "name":"xiaoming", + "_id":"7EZPN3F3ZS", + "age":12, + "newRelateSchool":{ + "_id":"7EZPN3F128", + "school_name":"WeDa小学" + } + } + ], + "total":3 +} +``` +* 对于关联字段,即使没有查询`_id`字段,也会返回。 + +#### compatibleWithV1详解 +本开关用于返回对关联关系(旧)的关联数据返回,并以`@` 符号返回 +示例返回值如下 +```json +{ + "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`后。 +```json +{ + "records":[ + { + "relateSchool":"7EZPN3F128", + "name":"xiaoming", + "_id":"7EZPN3F3ZS", + "age":12 + } + ], + "total":3 +} + +``` +将不会返回额外的关联字段。 + + +> 解释说明: +> +> 因为一些内部调整原因。将关联关系字段和主子明细字段作为 关联关系(旧)字段。其返回关联数据的方式通过特殊前缀`@`的方式进行返回。 + + + +出参结构 + +| 属性 | 类型 | 默认值 | 示例 | 说明 | +|:---------:|:--------------------------:|:---:|:-------------------:|:----------------------------------------------------------------------------------------------------------------:| +| `records` | `{ [key: string]: any }[]` | 无 | `{ name: "juli" }` | records 内的数组为对应的数据源数据对象 | +| `total` | `number` | 无 | `3` | 入参配置了 `getCount` 为 `true` 时会返回满足筛选查询条件的大小,注意,此字段不代表返回 records 的长度,可以用作页面大小的计算。当`getCount`为`false`的时候,不应该对此值做任何期待 | + +编辑器 Javascript 代码示例 -#### 编辑器 Javascript 代码示例 ```js export default async function ({event, data}) { try { @@ -573,7 +878,7 @@ export default async function ({event, data}) { | $and | 使用逻辑 and 连接字段,返回与这两个字段条件匹配的数据 | | $or | 使用逻辑 or 连接字段,返回与任一个字段条件匹配的数据 | -#### 示例1 +示例 1 ```json { @@ -587,7 +892,7 @@ export default async function ({event, data}) { } ``` -#### 示例2 +示例 2 ```json { @@ -628,7 +933,7 @@ export default async function ({event, data}) { | $in | 匹配数组中指定的任何值 | 数组 | | $nin | 不匹配数组中指定的任何值 | 数组 | -#### 示例1 +示例 1 ```json { @@ -642,7 +947,8 @@ export default async function ({event, data}) { } ``` -#### 示例2 +示例 2 + ```json { "$and": [ @@ -668,19 +974,19 @@ export default async function ({event, data}) { ### 特殊运算符 -| 名称 | 描述 | 适用类型 | -|:----------------:|:-----------------:|:----:| -| $search | 模糊查询 | 字符串 | -| $nsearch | 不包含,会把 null 值查找出来 | 字符串 | +| 名称 | 描述 | 适用类型 | 说明 | +|:----------------:|:-----------------:|:----:| :-----: | +| $search | 模糊查询 | 字符串 | 性能较差,尽量避免使用 | +| $nsearch | 不包含,会把 null 值查找出来 | 字符串 | 性能较差,尽量避免使用 | | $eq-current-user | 等于当前用户 | 字符串 | | $ne-current-user | 不等于当前用户 | 字符串 | -| $empty | 数据为 null | 任意类型 | +| $empty | 数据为 null | 任意类型 | | $nempty | 数据不为 null | 任意类型 | ->? `$empty`、`$empty` 在 mongo 中,会查询字段不存在和字段值为 null 的两种情况。 +> `$empty`,`$empty` 在 mongo 中,会查询字段不存在和字段值为 null 的两种情况。 ## 常见错误说明 -### 标识[xxx]必填参数未填 -xxx 字段被设置未必填属性时,如果参数的值没取到,就会出现这个错误。一般在返回的错误里有 errRecord 字段。例如 errRecord:{"foo":"bar"} 。 -可以看到 errRecord 中不存在xxx字段。所以必填校验失败。 +### 标识[xxx] 必填参数未填 +xxx 字段被设置未必填属性时,如果参数的值没取到,就会出现这个错误。一般在返回的错误里有errRecord字段。比如errRecord:{"foo":"bar"} 。 +可以看到比如errRecord中不存在xxx字段。所以必填校验失败。