javascript – 使用包含过滤器在环回中加入两个模型
作者:互联网
我有两个型号的购买和产品,而且productId对两者都很常见.
我需要从productId的产品型号中找到productDetails.
所以我在Purchase模型中创建了一个名为getProductDetails的自定义端点.
这就是我试图查询模型的方式.
Purchase.find({
"filter": {
include: {
relation: 'Product',
scope: {
fields: ['productDesc'],
}
}
},
where:{
id:purchaseId
},
我的关系是
购买belongsTo产品,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对象.
我不确定,为什么你要创建一个新的端点.环回提供的应该足够了.
例如
GET /Purchases/{id}/product
要么
GET /Purchases/{id}
带过滤器
{ "include": [ "product"]}
标签:loopbackjs,javascript,node-js 来源: https://codeday.me/bug/20191008/1875006.html