是否可以使用" IN"运算符与Breeze.js的FilterQueryOp类?我希望能够通过检查ID是否在数组中进行过滤。在Mysql中它将是一个简单的
SELECT * FROM a_table WHERE fieldname IN ('array1', 'array2', 'array3')
但我无法通过微风找到一种简单的方法吗?
答案 0 :(得分:1)
没有实际的'IN'运算符,但您可以通过'或'将几个breeze谓词放在一起并将复合谓词传递给 EntityQuery.where 方法来轻松完成相同的操作。 所以,如果你从
开始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);
答案 1 :(得分:1)
现在看来有一个IN filterQueryOp可用:
http://breeze.github.io/doc-js/api-docs/classes/FilterQueryOp.html#property_In
我认为这可以通过对一组谓词进行OR运算来实现Jay的原始解决方法?在那种情况下,在服务器端OR的周长出现故障之前,可以使用IN的标准数量的实际限制是多少?