是否会在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?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top