2013-09-12 3 views
0

Я пытаюсь сделать что-то вроде:BreezeJS - Регулярное выражение в тех случаях, когда пункт

var predicate = breeze.Predicate.create('columnName', breeze.FilterQueryOp.Contains, 'regexHere'); 
manager.executeQuery(entityQuery.From('tableName').where(predicate)); 

Это все прекрасно работает, когда я пытаюсь найти его «нормальный» способ, но я хотел бы включить регулярное выражение поиска который будет работать как оператор sql LIKE. В основном, меня интересует, как сделать статью похожей на sqls:

WHERE columnName LIKE '%abc%def%' 

Возможно ли это с Бриз?

ответ

3

Извините, но [FilterQueryOp.Contains], FilterQueryOp.StartsWith и FilterQueryOp.EndsWith являются ближайшими операторами запросов к тому, что вы хотите. Спецификация OData, которая используется для построения URL-адреса запроса, не поддерживает запросы на основе регулярных выражений.

Сообщалось, что вы можете использовать EntityQuery.withParameters, чтобы делать все, что хотите, с любыми параметрами, переданными от клиента. Например,

// Client side 
var query = EntityQuery.from("CustomersByRegex") 
     .withParameters({ regex: myRegex }); 

// Server side 
[HttpGet] 
public IQueryable<Customer> CustomersByRegex(string regex) { 
    // use the regex here against your customers collection 
    // and return the resulting customers; 
} 

Вы также можете смешивать и сопоставлять два механизма. то есть регулярный запрос бриза с фильтрами и вызов «withParamters».

Смежные вопросы