sql - 如何在 Objection/Knex 中使用“joinEager”和原始 sql 查询?
问题描述
我设法编写了一个原始查询,它允许我获取一个类别中的所有产品,甚至是该类别子类别中的产品,一直沿树向下。
我正在使用原始查询,因为我不知道如何使用反对/ knex api 来做到这一点。
我遇到的问题是我还想加入相关表,在这种情况下,对于我的产品,我有“products_meta”和“categories”
尽管我知道我可以简单地修改原始查询来做到这一点,但我想知道是否有更简单的方法通过使用一些反对/knex 方法,比如 joinEager。
到目前为止,我的代码看起来像这样:(下面的 sql 字符串只是获取一个类别及其子类别中的所有产品,这不是问题)
const sql = `
with recursive get_subcols as(
select id
from collections
where "parentId" = ${req.params.id}
union all
select c.id
from collections as c
inner join get_subcols gs
on c."parentId" = gs.id
), get_all_collections as (
select id from collections
where id = ${req.params.id}
union
select * from get_subcols
), get_all_products as (
select p.*, c.name as collection
from products as p
join "collectionProducts" cp
on cp."productId" = p.id
join get_all_collections gac
on cp."collectionId" = gac.id
left join collections as c
on cp."collectionId" = c.id
)
select * from get_all_products;
`
const result = await Collection.knex().raw(sql)
const products = result.rows
我的问题是,是否有可能做这样的事情:
.joinEager('[meta, collections]')
到结果,所以我也可以加入结果中的相关表?
解决方案
推荐阅读
- java - Best way to store data in array
- sql - SQL IF / CASE how TO
- python - 如何使用烧瓶流式传输桌面
- marklogic - Wildcarded search with "*" and "?" in search:search not working properly
- ruby-on-rails - Destruction of records in around_update
- javascript - React Jest - TypeError: (0 , _[....]) is not a function
- authentication - Google shopping api Request had insufficient authentication scopes
- python - 使用列表基于另一个更新数据框的列
- python - .copy() 引用 dict 而不是复制 Python
- node.js - Nuxt 6.14.6 redirect-ssl 模块无法在 AWS 中运行