我有一个模型,比尔, 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);
}
答案 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);
}
}