在Think.js中,我们一般用_complex和_logic配合来实现一些查询的组合条件,
比如
let data = await this.model('charge', 'mysql_nova').where(
{
_complex:
{
phone : [ '=', account]
account : [ '=', account],
_logic : "OR"
},
}
).field('time, expire, title, message').select();
我们可以通过这两个关键字的配合来实现对phone或则account的任意一条件满足即可。
但有时候我们有这样的需求,比如account为空或则account等于一个值。这个时候如果这样写,是得不到正确的SQL命令的:
_complex:
{
account : [ '=', ''],
account : [ '=', account],
_logic : "OR"
},
因为account是同一个key,只会覆盖,因而不会形成正确的SQL命令。
我们应该怎么做才能达到效果呢?这样写:
_complex:
{
_complex:
{
account : [ '=', ''],
},
account : [ '=', account],
_logic : "OR"
},
里面再套一个_complex即可。