- 当前 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
您好,请问这个怎么解决的?
我开始是参考楼下大神说的方法修正之前类型问题来做的,后面因为其他问题就直接改了数据表结构没在用联表查询,下面的是简化的代码,希望对你有用:
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({
//得到联表查询结果集
})
}
})
把这个中括号[]去掉,artilce_list 本身就是一个数组了
command.in([*])改为command.in(*)后的结果还是一样的
上面第一个是console.log(article_list)
形式为['a','b','c']
而能查询出结果的形式是[a,b,c],
数组里的引号去掉才行
既然知道是类型不同的问题,那你再把字符串数组用parseInt循环处理成数字数组不就好了吗?
谢谢,问题已解决