实在不好意思 我又发一遍。。因为没人理我
以下代码 执行不了。。出问题。
db.collection( 'name' )
.where({
a : _.and(_.gt( 10 ), _.lt( 14 )) ,
b: _.and(_.gt( 13 ), _.lt( 18 )) , //去掉这一行 就能执行了
c: 1
})
. get ({
success(res) {
console.log(res);
}
});
|
如果 去掉 b 的那一行就可以了。
1 请问是否bug?
2 之所以这么写 是因为 以前写成这样
where( {
a: _.gt( 10 ),
a: _.lt( 14 ),
b: _.gt( 13 ),
b: _.lt( 18 ),
c: 1
})
|
然后前天和昨天 分别 发现 这个语句随然能执行 但结果是错误的。
今天早晨好像突然好了
但是 现在发现 又不行了!!!!
我就想问问。。 腾讯的程序员能不能不要这么随意?? 能不能认真点??
经过进一步 测试 把lt写在 gt前面 其结果就正确了。
where( {
a: _.lt( 14 ), //lt 写前面
a: _.gt( 10 ),
b: _.lt( 18 ), //lt 写前面
b: _.gt( 13 ),
c: 1
})
|
我想请问 这 到底是什么样的 脑袋 思考出来的 逻辑啊??
感谢反馈,问题已复现,这个问题会在下版本修复,抱歉给你带来麻烦了
一共是两个 bug哦!
第一个是
.where({
a
: _.and(_.gt(
10
), _.lt(
14
)) ,
b: _.and(_.gt(
13
), _.lt(
18
)) , //去掉这一行 就能执行了
c:
1
})
第二个是
where( {
a: _.lt(
14
), //lt 必须写前面 ,如果先写 gt 其结果是 错的
a: _.gt(
10
),
b: _.lt(
18
), //lt 写前面
b: _.gt(
13
),
c:
1
})
第二个是 js 的语法呢,相同 key 的话后者会覆盖前者,下面两个是等价的:
{
a: _.lt(
14
), //lt 必须写前面 ,如果先写 gt 其结果是 错的
a: _.gt(
10
),
b: _.lt(
18
), //lt 写前面
b: _.gt(
13
),
c:
1
}
===
{
a: _.gt(
10
),
b: _.gt(
13
),
c:
1
}
@nickname