远程方法,查询和循环关系数据

时间:2018-06-10 04:14:58

标签: node.js loopbackjs

我有一个模型,比尔 hasMany 订单

如果我在比尔写一个远程方法,我如何查询账单并循环它的订单?

bill.json

{
  "name": "bill",
  ...
  "relations": {
    "orders": {
      "type": "hasMany",
      "model": "order",
      "foreignKey": "orderId"
    }
}

bill.js

Bill.doLoop = async function(id, body, callback) {
  let bill = await Bill.findById(id, {include: ['orders']})

  for (let order of bill.orders) {
    console.log(order);
  }
}

如果我这样做,我会收到以下错误:

  

请求的未处理错误POST / api / bills / 1 / doLoop:TypeError:bill.orders [Symbol.iterator]不是函数

如果我将账单转换为JSON字符串并返回,则可以访问订单,但这感觉非常脏:

let billJson = JSON.parse(JSON.stringify(bill))

for (let order of billJson.orders) {
  console.log(order);
}

1 个答案:

答案 0 :(得分:0)

我在Include filter - Access included objects上的Loopbacks文档中找到了答案:

  

在Node.js API中,调用toJSON()将返回的模型实例与相关项转换为普通的JSON对象。

将代码更新为:

Bill.doLoop = async function(id, body, callback) {
  let bill = await Bill.findById(id, {include: ['orders']})

  for (let order of bill.toJSON().orders) {
    console.log(order);
  }
}