mbo*_*las 6 node.js strongloop loopbackjs
我似乎陷入了经典的ORM问题,并且不知道如何处理它,所以在这一点上欢迎任何帮助.
有没有办法在hasManyThrough查询上获取数据透视表?更好的是,应用一些过滤器或排序.一个典型的例子
表产品
id,title
Run Code Online (Sandbox Code Playgroud)
表类别
id,title
Run Code Online (Sandbox Code Playgroud)
table products_categories
productsId, categoriesId, orderBy, main
Run Code Online (Sandbox Code Playgroud)
因此,在上面的场景中,假设您希望获得(main = true)的所有类别的产品X,或者您希望按类别对产品类别进行排序orderBy.
现在会发生什么是第一SELECT的产品,以获得产品数据,第二SELECT对products_categories获得categoriesId和最终SELECT的类别,以获得实际的类别.理想情况下,过滤器和排序应该适用于第二SELECT类
SELECT `id`,`productsId`,`categoriesId`,`orderBy`,`main` FROM `products_categories` WHERE `productsId` IN (180) WHERE main = 1 ORDER BY `orderBy` DESC
Run Code Online (Sandbox Code Playgroud)
另一个典型的例子是希望根据用户想要的订单来订购产品图像
所以你会有一个products_images表
id,image,productsID,orderBy
Run Code Online (Sandbox Code Playgroud)
你会想要的
SELECT from products_images WHERE productsId In (180) ORDER BY orderBy ASC
Run Code Online (Sandbox Code Playgroud)
这甚至可能吗?
编辑:这是中间表根据我的架构获得我需要的内容所需的关系.
Products.hasMany(Images,
{
as: "Images",
"foreignKey": "productsId",
"through": ProductsImagesItems,
scope: function (inst, filter) {
return {active: 1};
}
});
Run Code Online (Sandbox Code Playgroud)
事情是范围功能让我访问最终结果而不是中间表.
我不确定是否完全理解您的问题,但可以肯定您需要摆脱表格概念并用模型和关系来表达您的问题。
在我看来,您有两个模型 Product(properties: title) 和 Category (properties: main)。
然后,您可以在两者之间建立关系,潜在地
Product belongsTo CategoryCategory hasMany Product这意味着一个产品将属于一个类别,而一个类别可能包含许多产品。还有其他可用关系
然后,使用生成的 REST API,您可以过滤 GET 请求以根据其属性获取项目(如main您的情况),或者使用自定义 GET 请求(在添加关系时自动生成)来获取例如属于某个产品的所有产品。具体类别。
这有帮助吗?
| 归档时间: |
|
| 查看次数: |
538 次 |
| 最近记录: |