簡體   English   中英

使用包含過濾器在環回中連接兩個模型

[英]Joining two models in loopback using include filter

我有兩個模型Purchase和Products,而productId對於這兩個模型是通用的。

我需要從產品模型中找到purchaseId的productDetails。

因此,我在Purchase模型中創建了一個自定義終結點,稱為getProductDetails。

這就是我試圖查詢模型的方式。

         Purchase.find({
            "filter": {
                include: {
                    relation: 'Product',
                    scope: {
                        fields: ['productDesc'],
                    }
                }
            },
           where:{
                id:purchaseId
            },

我的關系是購買歸屬到產品,外鍵為productId

產品有很多購買

但是,即使我執行上述查詢,在查詢結果中也沒有得到productDesc

我的模特關系錯了嗎?

假設產品和購買模型定義如下:

product.json

{
  "name": "Product",
  "base": "PersistedModel",
  "idInjection": true,
  "properties": {
    "productDesc": {
      "type": "string",
      "required": false
    }
  },
  "validations": [],
  "relations": {
    "purchases": {
      "type": "hasMany",
      "model": "Purchase",
      "foreignKey": "productId"
    }
  },
  "acls": [],
  "methods": {}
}

purchase.json

{
  "name": "Purchase",
  "base": "PersistedModel",
  "idInjection": true,
  "properties": {},
  "validations": [],
  "relations": {
    "product": {
      "type": "belongsTo",
      "model": "Product",
      "foreignKey": "productId"
    }
  },
  "acls": [],
  "methods": {}
}

我已經像這樣調整了您的查詢:

let product = await Purchase.find({
      include: {
        relation: 'product',
        scope: {
          fields: ['productDesc']
        }
      },
      where: {
        id: 1
      }
    })

注意:已使用ES6和ES7,但可以輕松將其重寫為ES5

您必須使用toJSON將具有相關項目的返回模型實例轉換為純JSON對象。

我不確定,但是為什么要創建一個新端點。 環回提供的功能就足夠了。

例如

GET /Purchases/{id}/product

要么

GET /Purchases/{id}

帶過濾器

{ "include": [ "product"]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM