我有两个型号的购买和产品,而且productId对两者都很常见。
我需要从productId的产品型号中找到productDetails。
所以我在Purchase模型中创建了一个名为getProductDetails的自定义端点。
这就是我试图查询模型的方式。
Purchase.find({
"filter": {
include: {
relation: 'Product',
scope: {
fields: ['productDesc'],
}
}
},
where:{
id:purchaseId
},
我的关系是 购买belongsTo产品,foreignKey是productId
产品已经多次购买
但即使我执行上述查询,我也没有在查询结果中获得productDesc
我的模特关系错了吗?
答案 0 :(得分:3)
假设产品和购买模型定义如下:
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对象。
我不确定,为什么要创建一个新的端点。环回提供的应该足够了。
e.g。
GET /Purchases/{id}/product
或
GET /Purchases/{id}
带过滤器
{ "include": [ "product"]}