hasMany关系loopback

时间:2014-04-24 13:48:04

标签: node.js strongloop loopbackjs

我的models.json:

我的models.json

"masterTrip": {
    "options": {
        "relations": {
            "trips": {
                "type": "hasMany",
                "model": "trip",
                "foreignKey": "masterTripId"
            }
        }
    }
},
"trip": {
    "options": {
        "relations": {
            "masterTrips": {
                "type": "belongsTo",
                "model": "masterTrip",
                "foreignKey": "masterTripId"
            }
        }
    }
},

但是我没有得到旅行和mastertrip之间的关系。任何人都能解释一下吗?

2 个答案:

答案 0 :(得分:3)

有几件事可能是问题所在。以下是我想到的:

  • 您应该只需要属于另一个的模型上的外键。 (在这种情况下,那将是 trip 。)
  • 你真的在masterTrip下创建了旅行吗? (无论是在代码本身还是通过API?)我知道这听起来很愚蠢,但上下文不够清晰,无法判断您是否创建了样本数据。
  • 听起来你在/masterTrip/1/trips进行GET时实际上可能会得到数据吗?是吗?如果是这样,那听起来就像是正确的行为。

我自己对LoopBack还是比较新的,但我不确定filter[include]=belongsToRelationName是获取所需数据的正确方法。从技术上讲,您只是在寻找hasMany数据的相关数组,对吧?在这种情况下,属于 masterTrip 行程。获得它的RESTful方法是masterTrip/{id}/trips

希望其中一个有所帮助。

答案 1 :(得分:0)

您的“属于”关系名称不是单数。它应该是单数。

当你制作“属于”时,关系名称是单数的,并且hasMany你的关系名称是复数。有关更多详细信息,请参阅官方文档 -

请参阅下面的工作示例 -

{
  "name": "Booking",
  "base": "PersistedModel",
  "strict": false,
  "idInjection": true,
  "properties": {
    "myuserId": {
      "type": "number"
    },
    "orgin": {
      "type": "string"
    },
    "orgin_lat": {
      "type": "string"
    },
    "orgin_lon": {
      "type": "string"
    },
    "destination": {
      "type": "string"
    },
    "dest_lat": {
      "type": "string"
    },
    "dest_lon": {
      "type": "string"
    },
    "parcel_type": {
      "type": "string"
    },
    "volume": {
      "type": "string"
    },
    "weight": {
      "type": "string"
    },
    "price": {
      "type": "string"
    },
    "receiver_phn": {
      "type": "string"
    },
    "payment_mode": {
      "type": "string"
    },
    "booking_status": {
      "type": "string"
    },
    "lang": {
      "type": "string"
    },
    "booking_no": {
      "type": "string"
    },
    "cancel_reason": {
      "type": "string"
    },
     "cancel_by": {
      "type": "string"
    },
    "booking_date": {
      "type": "string"
    },
    "plan_later": {
      "type": "string"
    },
    "plan_date": {
      "type": "string"
    },
    "created": {
      "type": "string"
    },
    "modified": {
      "type": "string"
    }
  },
  "validations": [],
  "relations": {
      "biddings": {
      "type": "hasMany",
      "model": "Bidding",
      "foreignKey": "bookingId"
    }
  },
  "acls": [],
  "methods": {}
}

{
  "name": "Bidding",
  "base": "PersistedModel",
  "strict": false,
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "myuserId": {
      "type": "number"
    },
    "bookingId": {
      "type": "number"
    },
    "booking_no": {
      "type": "string"
    },
    "price": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "bid_date": {
      "type": "string"
    },
    "bid_time": {
      "type": "string"
    },
    "bid_status": {
      "type": "string"
    },
    "lang": {
      "type": "string"
    },
     "rate_driver": {
      "type": "number"
    },
    "created": {
      "type": "string"
    },
    "modified": {
      "type": "string"
    }
  },
  "validations": [],
  "relations": {
    "booking": {
      "type": "belongsTo",
      "model": "Booking",
      "foreignKey": "bookingId"
    },
    "myuser": {
      "type": "belongsTo",
      "model": "Myuser",
      "foreignKey": "myuserId"
    }
 
  },
  "acls": [],
  "methods": {}
}