如何在环回中使用子查询EXISTS?

时间:2018-06-26 21:07:11

标签: node.js postgresql loopbackjs strongloop

我有两个模型ReferenceProductReference有很多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 :(得分:0)

当前无法使用内置方法/查询语言基于相关模型属性查询模型过滤,请选中此issue。因此,您将必须使用数据源连接器执行sql。例如,如果您有一个名为Reference.js的模型文件:

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

结果将是仅具有id属性的对象数组。选中this

另一个选项可能是双向关系(“产品属于参考”)并查询库存> 0的产品,但是您将不得不将重复值分组:

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