w***@163.com
w***@163.com
  • 发布:2023-04-17 08:37
  • 更新:2023-04-18 07:44
  • 阅读:236

JQL数组in运算方法计算不正确

分类:uniCloud

官方教程:
UniCloudr官方文档(https://uniapp.dcloud.net.cn/uniCloud/jql-operator-example.html#add)
里的:

我的问题:
我想使用JQL对uni-id-users.role数组字段进行in()运算,想要找出role字段里包括admin角色的用户。但是报错了,见下图。我是按上面的官方教程写的。为什么会报错?

我试过下面的写法,能跑出结果,但返回结果是错误的。如下图。

2023-04-17 08:37 负责人:无 分享
已邀请:
DCloud_uniCloud_CRL

DCloud_uniCloud_CRL

in接受两个参数,第一个参数是值,第二个参数是指定的数组,值在数组中才会返回true, 否则返回false。

你写反了 in('admin', role)

  • w***@163.com (作者)

    我改为这种 in('admin', role) 写法,但还是报错,麻烦再回来帖子看一下。

    2023-04-18 07:44

  • DCloud_uniCloud_CRL

    回复 w***@163.com: 在你查询的数据中有的 role 字段类型不是数组

    2023-04-18 16:27

w***@163.com

w***@163.com (作者)

我改为下面这种写法,但还是报错。

in('admin', role)

报错信息见下图:

下面是我执行的JQL

db.collection('uni-id-users').field('nickname, role, in("admin", role) as hasRole').get()
  • DCloud_uniCloud_CRL

    在你查询的数据中有的 role 字段类型不是数组

    2023-04-18 16:25

  • w***@163.com (作者)

    回复 DCloud_uniCloud_CRL:

    role字段是数组:

    1)它是uni-id-users表中的,其schema已定义为array类型。

    2)我里面保存的值也是数组对象,请参考我上面的这张图:

    https://ask.dcloud.net.cn/uploads/questions/20230417/31d621f3e3de17a209d151ccdbed421e.png

    为什么还是报错呢?

    2023-04-20 10:36

  • DCloud_uniCloud_CRL

    回复 w***@163.com: 你这个in使用不对,应该是 in("admin", role)。这样你就会出现上面你发的错误,那是因为其他数据中的role字段为空或者不是数据类型,导致的错误。

    2023-04-21 17:06

要回复问题请先登录注册