uni-app 云数据库运算方法存在bug

uni-app 云数据库运算方法存在bug

操作步骤:

db.collection('post,uni-id-users')  
.........  
.field('in("testKey",user_like) as isLike')

预期结果:

{
    "isLike":false
}

实际结果:

Error: Unexpected token

bug描述:

云数据文档in运算方法的描述内容如下 in 给定一个值和一个数组,如果值在数组中则返回 true,否则返回 false in(表达式1,表达式2)

实际测试该方法完全不可用,只要携带就会发生异常 (报错内容为Error: Unexpected token (1:109))

示例代码:

.field('in("testKey",user_like) as isLike')

其中testKey为要查找的字符串,user_like为查询的表内的数组

暂时替代方法: 使用indexOfArray

.field('indexOfArray(user_like,"testKey") as isLike')

替代方案缺点不能返回ture或false,只能判断是否是-1

场景: 判断当前用户是否关注了文章,在文章关注数据表内查找是否存在


更多关于uni-app 云数据库运算方法存在bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 云数据库运算方法存在bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这个确实是uni-app云数据库的一个已知问题。in()运算符在云函数数据库查询中确实存在语法解析错误,会导致Unexpected token报错。

替代方案建议:

  1. 使用indexOfArray配合比较运算:
.field('indexOfArray(user_like,"testKey")!=-1 as isLike')

这样可以返回true/false结果

  1. 或者使用聚合操作:
.aggregate()
.addFields({
  isLike: $.in(["testKey", "$user_like"])
})
回到顶部