Breeze Predicate в подзапросе
У меня есть две сущности, назовем их Альфа и Бета.
Между ними есть отношения один ко многим, так что у Беты есть внешний ключ к Альфе, MyAlphaId
и, таким образом, ссылочное свойство MyAlpha
,
У меня есть предикат, созданный для Альфы.
например
var predicateAlpha = new Predicate('name', 'contains', 'somevalue');
Я хочу затем "перенести" это на запрос для бета-версии, где его myAlpha
свойство соответствует этому предикату.
например
var predicateBeta = new Predicate('myAlpha', 'in', predicateAlpha);
Я осознаю, что могу построить предикат следующим образом:
var predicateBeta = new Predicate('myAlpha.name', 'contains', 'somevalue');
Моя проблема в том, что я не знаю, что это за предикат. Я не могу просто предвидеть 'myAlpha.'
так как он может включать функцию OData, такую как 'concat('somefield', 'someotherfield')'
,
Любые другие мысли или предложения о том, как я могу этого достичь?
Для меня было бы разумно, чтобы IN принял предикат, который позволяет этому случиться... Я не могу видеть исходный код, принимающий предикат, поэтому я не могу думать, как еще сделать это...
1 ответ
При условии, что Alpha
имеет свойство betas
вы можете запросить Alphas, используя предикат, и expand
Бета-версии, чтобы они тоже были внесены. Затем соберите бета-версии, если они вам нужны, в одном списке:
var query = em.createQuery(predicateAlpha).expand('betas');
var betas = [];
em.executeQuery(query).then(queryResult => {
queryResult.results.forEach(alpha => {
betas = betas.concat(alpha.betas);
});
});