【问题标题】:How to use the subquery EXISTS in Loopback?如何在 Loopback 中使用 EXISTS 子查询?
【发布时间】:2018-06-28 02:38:43
【问题描述】:

我有两个模型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
)

谢谢!

【问题讨论】:

  • 您的问题是什么? “环回”指的是什么?
  • 嗨 Erwin,我说的是 Strongloop API 的 Loopback Node Framework。
  • 标签[loopback]虽然是同一个词,但指的是别的东西。
  • 谢谢欧文。已编辑,对此有何帮助?
  • 对不起,不知道loopbackjs。但是如果id 在表Reference 中是唯一的,则不需要DISTINCT

标签: node.js postgresql loopbackjs strongloop


【解决方案1】:

目前无法使用内置方法/查询语言查询基于相关模型属性的模型过滤,请查看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) {})

【讨论】:

  • 感谢您的回答。直接使用原始 SQL 是不可能的,因为我需要激活一些钩子和更复杂的 getter/setter。第二个选项很好,但问题是响应:``` [ { "id": 1, "products": [] } ] ``` Te 响应包括空产品的引用。
  • 如果这是您得到的响应,您正在查询参考模型(带有一些包含过滤器),在第二个选项的示例中,我正在查询产品模型。
猜你喜欢
  • 1970-01-01
  • 2010-12-08
  • 2019-01-12
  • 1970-01-01
  • 2016-06-12
  • 2020-12-27
  • 2011-12-09
  • 1970-01-01
相关资源
最近更新 更多