Как использовать подзапрос EXISTS в Loopback? - PullRequest
0 голосов
/ 27 июня 2018

У меня есть две модели Reference и Product, Reference имеет много Product, и мне нужно выполнить следующий запрос (с использованием некоторого метода Loopback), чтобы я не получил пустые продукты.

SELECT DISTINCT R.id
FROM Reference R
WHERE EXISTS (
  SELECT id FROM Product P
  WHERE P.referenceId = R.id AND P.stock > 0
)

Спасибо!

1 Ответ

0 голосов
/ 27 июня 2018

В настоящее время невозможно выполнить запрос на фильтрацию модели на основе связанного свойства модели с использованием встроенных методов / языка запросов, отметьте эту проблему . Таким образом, вам нужно будет выполнить ваш sql с помощью соединителя источника данных. Это, например, если у вас есть файл модели с именем Reference.js:

var dbConnection = Reference.dataSource.connector;
dbConnection.execute(yourSql, [], function (err, references) {});

Результатом будет массив объектов только со свойством id. Проверьте это

Другой вариант может заключаться в том, чтобы сделать отношение двунаправленным (Товар принадлежит ссылке) и запросить товары, имеющие запас> 0, но вам придется сгруппировать повторяющиеся значения:

var Product = Reference.app.models.Product;
Product.find({where: {stock: {gt:0}}, fields: {referenceId:true}}, function (err, prods) {})
...