- 当前 Bug 的表现(可附上截图)
- 预期表现
ids变量有值,应该查询到结果,但现在res.data是空的。代码之前运行都是没问题且无改动。今天突然发现不对。如果我将76行代码hard code直接改成 _id:'5c2a190b644aca73b4c1aa2d' 就可以查到,但是如果_id:_in(['5c2a190b644aca73b4c1aa2d'])就查不到。请尽快处理,谢谢。
框架类型 | 问题类型 | 终端类型 | AppID | 基础库版本 |
---|---|---|---|---|
小程序 | Bug | 客户端 | wx3eb80b74ec808d22 | 2.4.3 |
2 个回答
你是有导入数据么,导入的数据_id不再是string格式,不支持操作符,只能精确指定。
条件查询最好不要使用_id字段,doc()指定是_id唯一稳定的使用方式。
建议修改一下表结构,用其它字段替代_id的条件查询。
谢谢大神的回复,确实我是导入的数据,因为字段太多,如果用云开发控制台输入数据太麻烦,所以我都建的JSON文件,先写好,再倒入。微信小程序官方是否考虑修改一下这个问题,因为_id是唯一标识属性,使用这个查数据太平常不过,而且经常也需要同时查询多条数据。如果现在我要改自己的查询代码,只能循环调用多次doc()方法得到所有的数据,但查询api都是异步调用的。我得确保查询都结束了,再使用这些数据,这个就不好写了吧。而且在我这种小菜鸟看来,导入的和手动输入的数据理应是同一数据类型,还有就是_id理应和其他字段一样,只是值唯一而已。大神可否反馈贵团队解决下,这个很让人困惑,难道要自己再做一个id?
创建一个id字段并且为其创建索引是个可行的方案。
谢谢你的反馈,我们会想办法修复这个问题,
我也出现这个问题 用_id做in 查询返回结果为空,请问什么时候可以修复好?
还有一点,就是这个能否考虑提供同步调用方式。ajax尚且有async属性呢,这样我多次查询的数据可以确保组装到一起,我看云开发的API似乎都是异步的,这个就很不灵活,我们不总是将所有代码都写在sucess处理方法内的,有时候还要做别的处理,sucess的得到的查询结果只是中间值而已。await 只能用在async方法内,但我的方式是事件响应函数并不是async方法呀。
事件响应函数也可以用async吧。类似ajax的async为false的实现已经超过我们SDK的处理范畴了,SDK应该是服务接口的替代者,而不参与页面逻辑