我有两个数组只包含我想要匹配的字符串。
我不能使用contains或setIntersection,因为我希望不区分大小写的匹配也能正常工作。
我尝试了很多不同的方法,但我还没有找到可行的解决方案。我认为这是迄今为止我提出的最好的,但它不起作用:
r.db( 'my_db' ).table( 'Table' ).hasFields( 'tags' ).filter( function( row ) {
return row( 'tags' ).filter( function( t ) {
return r.expr( [ 'Foo', 'Bar', 'FooBar' ] ).filter( function( m ) {
return t.match( '(?i)^' + m + '$' );
} ).count().gt( 0 );
} ).count().gt( 0 );
} );
tags列是一个字符串数组。但我认为问题是m不是一个字符串所以我不能用它来匹配。但是如何将其转换为字符串?我尝试过coerceTo,但这不起作用。
关于如何使这项工作的任何想法?
答案 0 :(得分:0)
您应该可以使用.add()
代替+
来查询您的查询,例如:
r.expr('(?i)^').add(m).add('$')
您也可以尝试这样的事情:
r.db('my_db').table('Table').hasFields('tags').filter(row =>
row('tags').map(x => x.upcase()).setIntersect(['FOO', 'BAR', 'FOOBAR']).isEmpty().not())