5***@qq.com
5***@qq.com
  • 发布:2022-07-10 00:18
  • 更新:2024-07-29 17:10
  • 阅读:401

在clientDB中使用in查询的问题

分类:uniCloud

前端使用in查询出错
selectId 为字符串数组['1','2','3']

isok = await db.where(user_id == $cloudEnv_uid && _id in ${selectId}).update({is_select:true})

isok = await db.where(user_id == $cloudEnv_uid && _id in “${selectId}”).update({is_select:true})

以上都报 Identifier directly after number (1:40) 错误

在云端中的 JQL查询.jql 中测试上面的写法是可以的,不知是什么原因,请教各位大佬。

2022-07-10 00:18 负责人:DCloud_uniCloud_WYQ 分享
已邀请:
7***@qq.com

7***@qq.com

感谢楼主,问题解决了。
改进了一下,不用写循环,用join更方便

where(`reply_comment_id in ['${arr.join("','")}']`)
5***@qq.com

5***@qq.com (作者)

好吧,还是自己答吧,再次仔细阅读文档,发现官方的写法竟然是数组样式的字符串,长得像数组,实际是字符串。

“['1','2','3']" 是这个样子的,而我传入的是一个真数组,不知道为什么在clientDB中为何无法这样传入。还是我姿势不对?

我的解决方法:把真数组循环一下,组合成一个字符串样式的假数组,传入后就正常了.

虽然unicloud有不少小问题,但是的确给我们开发者提供了很多便利,还是值得点赞的。

5***@qq.com

5***@qq.com (作者)

晕,发贴不允许使用 反引号的,在上面红色代码前和后实际是有一个反引号的。

5***@qq.com

5***@qq.com (作者)


实际代码如上,这样的话运行是正常的!

y***@126.com

y***@126.com - winqer

是不是可以这么写呢
.where({
'_id': dbCmd.in(['a','b'])
})

要回复问题请先登录注册