1***@qq.com
1***@qq.com
  • 发布:2021-09-27 11:14
  • 更新:2021-09-28 11:23
  • 阅读:971

unicloud-db前端组件:如何使用where过滤类型为arry的字段

分类:uniCloud

在uni-id-users中定义了role如下:
"role": {
"bsonType": "array",
"title": "角色",
"description": "用户角色",
"enum": {
"collection": "uni-id-roles",
"field": "role_id as value, role_name as text"
},
"foreignKey": "uni-id-roles.role_id"

某条记录其role为["visitor_personal"]

那么我在前端<unicloud-db>组建where属性过滤时为何这么写不对:
<unicloud-db ref="udb" collection="uni-id-users,uni-id-roles"
field="username,user_id,user_dept,mobile,status,email,role{role_name},dcloud_appid,register_date" :where="where" page-data="replace" :orderby="orderby" :getcount="true" :page-size="options.pageSize" :page-current="options.pageCurrent"
v-slot:default="{data,pagination,loading,error,options}" :options="options" loadtime="manual" @load="onqueryload">

其中,where:"role[0]=='visitor_personal'" 这么写在前端组建调用数据库获取数据时没办法把role为visitor_personal的数据筛选出来

2021-09-27 11:14 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ
  • 1***@qq.com (作者)

    我试过了,不可以。其他非数组型字段(如username)可以这样写,但是role是数组型的,这样写不对

    2021-09-28 16:18

  • DCloud_uniCloud_WYQ

    回复 1***@qq.com: 不对是什么表现?查不到数据还是有错误信息?

    2021-09-29 11:11

  • 1***@qq.com (作者)

    回复 DCloud_uniCloud_WYQ: 就是查不到数据,role为visitor_personal的数据不显示(数据库里确实存在这条数据)。当我把查询条件换为username,mobile这些时就可正常查询,应该不是组件数据绑定出错。

    2021-09-29 14:21

  • 1***@qq.com (作者)

    回复 DCloud_uniCloud_WYQ: 我将visitor_personal换位系统默认的admin也没办法显示超级管理员

    2021-09-29 14:26

  • DCloud_uniCloud_WYQ

    回复 1***@qq.com: 之前没仔细看你帖子里面的描述,你联表查询后过滤的话需要注意关联字段已经被替换成副表内容了。你可以在HBuilderX的jql管理器里面写一下试试就知道怎么查了,关于联表后的数据结构的文档在这:https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=lookup

    2021-09-29 14:39

  • 1***@qq.com (作者)

    回复 DCloud_uniCloud_WYQ: 哈哈哈哈问题就出在这,我去看看,真的太谢谢你啦!!!!!

    2021-09-29 14:55

该问题目前已经被锁定, 无法添加新回复