UNIAPP&schema2code生成的列表页面中的搜索功能

在uniapp中用schema2code可以快速生成增/删/改查页面.

如果只是简单表,非常好用,

但是如果你的数据表有外键关联,

有些地方文档里没有讲到好像.

1.感觉像是个BUG

当有外键时,特别是有多个关键关联多个表时,

如果生成的列表页不正常(控制台报错,白屏)

你可以在代码中找找下面这一行,

collectionList: [db.collection('xxxx1')].getTemp(),db.collection('xxxx2')].getTemp().......]

这里有多个getTemp()生成临时表,

检查下是不是有重复的,删除即可恢复list页面的正常工作.

 2.如下图列表页中的搜索框,

    默认是不工作的.

它其实是需要配置的,

在列表页的代码中找到script标签, 下面一点就能看到官方备注

<script>
  import { enumConverter, filterToWhere } from '../../js_sdk/validator/sj-product-yl.js';

  const db = uniCloud.database()
  // 表查询配置
  const dbOrderBy = '' // 排序字段
  const dbSearchFields = ["product_id[0].text"] // 模糊搜索字段,支持模糊搜索的字段列表。联表查询格式: 主表字段名.副表字段名,例如用户表关联角色表 role.role_name
  // 分页配置
  const pageSize = 20
  const pageCurrent = 1

需要说的是,如果需要搜索的字段是从副表拿来的,

订单表order里有个userId, 他和user表的_id外键关联, 但是我们搜索的不是userID,而是user表里的username,

那这里的要填的搜索字段就应该是

const dbSearchFields=['userId[0].userName']

易错的地方来了,

这两个表,order和user为了用schema2code生成的页面中, 

在schema中写法如下(官方写法)

//在order表的schema.json中
////.....
"user_id":{
			"bsonType": "string",
			"description": "用户ID",
			"title": "用户ID",
			"foreignKey": "user._id",
			"enum":{
				"collection": "user",
				"field": "_id as value,username as text"
			}
		},

最后一行,它把要从联表查询副表中需要显示的数据命名成了text,

这样是为了使在生成的页面中,可以为uni-data-picker(内部数据格式应该也是value 和text) 填充数据.如图

问题就在这里,如果你想使用搜索功能,

这时在前面配置的搜索字段就因为这个原因不工作了.我们要搜索的是副表的username,

但是username as text, 它改名了,不叫username了,所以 不工作了......

const dbSearchFields=['userId[0].userName']

改为

const dbSearchFields=['userId[0].text']

文档里没有说到~~~弄我一天. ...

### 关于 `schema2code` 工具 `schemacode` 是一种用于将数据模式(Schema)转换为编程语言代码的工具。它通常被用来简化基于 Schema 定义生成代码的过程,从而减少手动编码的工作量并提高一致性。以下是关于该工具的一些基本信息及其使用方法。 #### 1. **什么是 `schema2code`** `schemacode` 是一款开源工具,能够解析多种类型的 Schema 文件(如 JSON Schema、Avro Schema 等),并将这些定义转化为目标编程语言中的类或结构体[^1]。这种转化过程可以显著提升开发效率,尤其是在微服务架构中频繁使用的场景下。 #### 2. **支持的语言和框架** - 支持的目标语言可能包括但不限于 Java、Python、C#、Go 等。 - 对于特定的数据格式(例如 Avro 或 Protobuf),它可以自动生成对应的序列化/反序列化的实现逻辑。 #### 3. **安装方式** 要下载和安装 `schema2code`,可以通过以下几种常见的方式: ##### 方法一:通过包管理器安装 如果存在官方发布的版本,则可以直接利用主流包管理工具完成安装操作。比如对于 Python 用户来说: ```bash pip install schemacode ``` ##### 方法二:源码编译安装 访问该项目的 GitHub 页面或其他托管平台获取最新版源码后自行构建环境运行程序。假设项目位于某个 GitLab/GitHub 地址上,执行如下命令克隆仓库到本地机器后再按照文档指引部署即可: ```bash git clone https://github.com/example/schema2code.git cd schema2code make build && make install ``` #### 4. **基本用法** 一般情况下,`schema2code` 提供了一个简单的 CLI 接口来处理输入输出参数设置等问题。下面是一个典型的例子展示如何调用此工具生成对应的结果文件。 ###### 命令行示例 ```bash schema2code --input my_schema.json --output ./generated_code --language python ``` 上述指令表示读取名为 `my_schema.json` 的 JSON Schema 文件作为输入,并将其映射至 Python 类型系统下的模型声明存储路径指定为当前目录下的子文件夹 `./generated_code`. #### 5. **高级特性** 除了基础的功能之外,部分增强选项也可能提供给开发者灵活定制需求的能力,例如: - 自动导入必要的库依赖关系; - 配置额外注解或者元数据附加信息; - 处理复杂嵌套对象以及数组类型字段等等[^4]. --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值