收藏
回答

云开发api严重问题,查询in指令失效

问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 小程序 Bug 客户端 wx3eb80b74ec808d22 2.4.3

- 当前 Bug 的表现(可附上截图)


- 预期表现

ids变量有值,应该查询到结果,但现在res.data是空的。代码之前运行都是没问题且无改动。今天突然发现不对。如果我将76行代码hard code直接改成 _id:'5c2a190b644aca73b4c1aa2d' 就可以查到,但是如果_id:_in(['5c2a190b644aca73b4c1aa2d'])就查不到。请尽快处理,谢谢。


最后一次编辑于  01-01
回答关注问题邀请回答
收藏

2 个回答

  • 张吉(jimmyjzhang)
    张吉(jimmyjzhang)
    01-02

    你是有导入数据么,导入的数据_id不再是string格式,不支持操作符,只能精确指定。

    条件查询最好不要使用_id字段,doc()指定是_id唯一稳定的使用方式。

    建议修改一下表结构,用其它字段替代_id的条件查询。

    01-02
    赞同 1
    回复 3
    • 张军怀
      张军怀
      01-02

      谢谢大神的回复,确实我是导入的数据,因为字段太多,如果用云开发控制台输入数据太麻烦,所以我都建的JSON文件,先写好,再倒入。微信小程序官方是否考虑修改一下这个问题,因为_id是唯一标识属性,使用这个查数据太平常不过,而且经常也需要同时查询多条数据。如果现在我要改自己的查询代码,只能循环调用多次doc()方法得到所有的数据,但查询api都是异步调用的。我得确保查询都结束了,再使用这些数据,这个就不好写了吧。而且在我这种小菜鸟看来,导入的和手动输入的数据理应是同一数据类型,还有就是_id理应和其他字段一样,只是值唯一而已。大神可否反馈贵团队解决下,这个很让人困惑,难道要自己再做一个id?

      01-02
      回复
    • 张吉(jimmyjzhang)
      张吉(jimmyjzhang)
      01-03回复张军怀

      创建一个id字段并且为其创建索引是个可行的方案。

      谢谢你的反馈,我们会想办法修复这个问题,

      01-03
      回复
    • 口木
      口木
      01-30回复张吉(jimmyjzhang)

      我也出现这个问题 用_id做in 查询返回结果为空,请问什么时候可以修复好?

      01-30
      回复
  • 张军怀
    张军怀
    01-02

    还有一点,就是这个能否考虑提供同步调用方式。ajax尚且有async属性呢,这样我多次查询的数据可以确保组装到一起,我看云开发的API似乎都是异步的,这个就很不灵活,我们不总是将所有代码都写在sucess处理方法内的,有时候还要做别的处理,sucess的得到的查询结果只是中间值而已。await 只能用在async方法内,但我的方式是事件响应函数并不是async方法呀。

    01-02
    赞同
    回复 1
    • 张吉(jimmyjzhang)
      张吉(jimmyjzhang)
      01-03

      事件响应函数也可以用async吧。类似ajax的async为false的实现已经超过我们SDK的处理范畴了,SDK应该是服务接口的替代者,而不参与页面逻辑

      01-03
      回复