如何使用Breeze FilterQuerCop类使用“在”运算符中?
题
是否会在Breeze.js与FilterQueryop类一起使用“In”运算符?我希望通过检查ID是否处于数组中,能够通过检查来过滤。在mysql中,这将是一个简单的
SELECT * FROM a_table WHERE fieldname IN ('array1', 'array2', 'array3')
但我找不到简单的方式来用微风来做这件事?
解决方案
在操作员中没有实际的“,但您可以通过'或'或者一起使用几个微风谓词并将复合谓词传递给 entityquery。 所以,如果你从
开始var Predicate = breeze.Predicate;
var p1 = Predicate.create('fieldName', '==', 'array1');
var p2 = Predicate.create('fieldName', '==', 'array2');
var p3 = Predicate.create('fieldName', '==', 'array3');
.
然后给出这3谓词,或者它们如此如此:
var newPred = Predicate.or(p1, p2, p3);
.
或
var newPred = p1.or(p2, p3);
.
或
var preds = [p2, p3];
var newPred = p1.or(preds);
.
或通过更流利的方法:
var newPred = Predicate.create("fieldName", "==", "array1")
or("fieldName", "==", "array2")
.or("fieldName", "==", "array3")
.
显然,您还可以创建自己的JavaScript函数,为您执行此组合。
在任何情况下,一旦您有综合谓词,您可以写入:
var myQuery = breeze.EntityQuery.from("a_table").where(newPred);
. 其他提示
Looks like there is an IN filterQueryOp available now:
http://breeze.github.io/doc-js/api-docs/classes/FilterQueryOp.html#property_In
I presume this implements Jay's original workaround by OR'ing together a set of predicates? In that case what is the practical limit to the number of criteria that can used with IN before the girth of the server-side OR breaks down?
不隶属于 StackOverflow