收藏
回答

小程序云开发(command.in)查询语句求解

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 工具 wx3ca367855c3aa789 2.6.2

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

用command.in筛选查询的结果,command.in(我输参数),

    这个参数如果是自己写的(如:[4,5,6]),可以有结果;

var artilce_list = resu.split(',');

db.collection('article_co').where({

id: db.command.in([4, 5, 6])//此处直接写死

}).get({

success: res => {

console.log(res)

},

fail:res =>{

console.log(res)

}

})


    如果是变量付给的就没有结果

var resu = '4,5,6';//假设这是获取的变量

var artilce_list = resu.split(',');

db.collection('article_co').where({

id: db.command.in([artilce_list])  // 这里拼接字符串试过,也没有用

}).get({

success: res => {

console.log(res)

},

fail:res =>{

console.log(res)

}

})

- 预期表现

查询的条件不应该是写死的才行,如果不能掉取变量就没有用,即使拼接字符串也试过,也没有用,求告知方法,或者有什么替代方案,此处就是一个联表查询(评论表里查出相关文章id数组,然后去文章表里查询id在数组里的输出),求大佬告知,或管理更新云开发的相应功能

- 复现路径


- 提供一个最简复现 Demo





回答关注问题邀请回答
收藏

2 个回答

  • WXJ
    WXJ
    2019-05-12

    您好,请问这个怎么解决的?

    2019-05-12
    有用
    回复 1
    • \
      \
      2019-05-18

      我开始是参考楼下大神说的方法修正之前类型问题来做的,后面因为其他问题就直接改了数据表结构没在用联表查询,下面的是简化的代码,希望对你有用:

          db.collection('表1').where({

             //查询条件

          }).get({

              success: res => {

                  var that = this;

                  var Array = res.data;

                  var index = 0;

                  var z = Array[index].id;

                  var result = Array[index].id;

                  var new_result = [];

                  new_result.push(result);

                  for (var i = 1; i < Array.length; i++) {

                      var y = Array[i].id

                      if (z == y) {

                          continue;

                      } else {

                          var x = y

                          new_result.push(x);

                      }

                  }

              db.collection('表2').where({

                //查询条件

              }).get({

                 //得到联表查询结果集

              })

          }

       })

      2019-05-18
      回复
  • 悟空
    悟空
    2019-04-22


    把这个中括号[]去掉,artilce_list 本身就是一个数组了

    2019-04-22
    有用
    回复 4
    • \
      \
      2019-04-22

      command.in([*])改为command.in(*)后的结果还是一样的


      上面第一个是console.log(article_list)

      形式为['a','b','c']

      而能查询出结果的形式是[a,b,c],

      数组里的引号去掉才行



      2019-04-22
      回复
    • 悟空
      悟空
      2019-04-22回复\

      既然知道是类型不同的问题,那你把字符串数组用parseInt循环处理成数字数组不就好了吗?

      2019-04-22
      1
      回复
    • \
      \
      2019-04-22回复悟空

      谢谢,问题已解决

      2019-04-22
      回复
    • 小王同志
      小王同志
      2022-04-09回复\
      楼主,我这样改不对吗,怎么还是不行呢
      2022-04-09
      回复
登录 后发表内容