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字段。所以必填校验失败。