[英]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.