【问题标题】:Getting joined data from strongloop/loopback从 strongloop/loopback 获取连接数据
【发布时间】:2015-06-06 14:37:35
【问题描述】:

如何从两个连接的表中获取数据? 假设有两个模型分别称为 Category(CategoryId, CategoryName) 和 Product(ProductId, ProductName, CategoryId),有没有办法得到类似的结果:(ProductId, ProductName, CategoryId, CategoryName)

【问题讨论】:

    标签: node.js loopbackjs loopback


    【解决方案1】:

    您的 Category 模型和 Product 模型之间应该存在关系。一个类别 hasMany 产品和每个产品 belongsTo 一个类别。所以你的模型 json 文件应该是这样的

    类别:

    {
      "name":"Category",
      "properties":{
        "CategoryId": {
          "type":"Number",
          "id":1
        },
        "CategoryName":{
          "type":"String"
        }
      },
      "relations": {
        "products": {
          "type":"hasMany",
          "model":"Product",
          "foreignKey":"CategoryId"
        }
      }
    }
    

    产品

    {
      "name":"Product",
      "properties":{
        "ProductId: {
          "type":"Number",
          "id":1
        },
        "ProductName":{
          "type":"String"
        },
        "CategoryId": {
          "type":"Number"
        }
      },
      "relations": {
        "category": {
          "type":"belongsTo",
          "model":"Category",
          "foreignKey":"CategoryId"
        }
      }
    }
    

    当然,这些 json 定义必须用相应的选项和数据源属性来完成,只有你知道。

    这两个模型之间的关系会将端点添加到环回浏览器,以便您可以查询特定类别中的产品:

    GET /api/Categorys/:id_category/products
    

    产品所属的类别

    GET /api/Products/:id_product/category
    

    请注意,除非您为 Category 指定复数选项,否则它的复数将是 Categorys。这不是错字。

    最后,如果您想查询产品及其类别,您将使用 include 过滤器

    GET /api/Products/:id_product?filter[include]=category
    

    希望对你有帮助。

    【讨论】:

    • 感谢您的回答。所以这也意味着如果你想要连接数据,关系是必须的。
    • 那种。您可以为 Product 声明一个自定义远程方法,对于每个结果,调用 Category.find 并使用其 Category 扩展产品属性。但是这种关系替代品对于常见的用例来说是无用的,并且可能过度杀伤。
    • 好的,谢谢您的回复!
    • 不幸的是,当您有多个外键时,这种常见的环回模型技术不起作用!!!
    • @kensai 怎么样?您的意思是属于多个实体的实体?我有那个用例,它可以工作。也许我可以帮助您找出是什么阻止了您的工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多