编程语言
首页 > 编程语言> > javascript – 使用包含过滤器在环回中加入两个模型

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