使用包含filterjoin两个回送模型
我有两个模型购买和产品,和productId是共同的两个。
我需要从purchaseId的产品模型中findproductDetails。
所以我在Purchase模型中创build了一个名为getProductDetails的自定义端点。
这是我试图查询模型。
Purchase.find({ "filter": { include: { relation: 'Product', scope: { fields: ['productDesc'], } } }, where:{ id:purchaseId },
我的关系是Purchase belongsTo Product,foreignKey是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对象。
我不确定,你为什么要创build一个新的端点。 环回提供的应该足够了。
例如
GET /Purchases/{id}/product
要么
GET /Purchases/{id}
与filter
{ "include": [ "product"]}