Я использую play-framework с реактивными драйверами mongo. Для обработки реактивных Монго BSONObjectId
в нашем файле маршрутов, я создаю следующее связующие:Play-Framework: не удается проанализировать параметр companyId как BSONObjectID: неверно ObjectId
object StringToBSONObjectIdBinder {
/* This is for Path Parameter*/
implicit object pathBindableBSONObjectID extends play.api.mvc.PathBindable.Parsing[BSONObjectID](
BSONObjectID(_), _.stringify,
(key: String, e: Exception) =>
"Cannot parse parameter %s as BSONObjectID: %s".format(key, e.getMessage))
/* This is for query String*/
implicit object queryStringBindableBSONObjectID extends play.api.mvc.QueryStringBindable.Parsing[BSONObjectID](
BSONObjectID(_), _.stringify,
(key: String, e: Exception) =>
"Cannot parse parameter %s as BSONObjectID: %s".format(key, e.getMessage))
}
В маршрутизации я легко маршрут мой идентификатор как путь пары, как следующий пример:
GET /company/:companyId/users-detail controllers.CompanyController.userDetail(companyId: BSONObjectID)
Моего BSONObjectId
легко сопоставляется с моим параметром пути обработчика запроса. Но когда я использую следующий маршрут после выше маршрута, как показано ниже:
GET /company/detail controllers.CompanyController.companyDetail
Я получаю следующее BadRequest
:
For request 'GET /company/detail?t=1466673779753' [Cannot parse parameter companyId as BSONObjectID: wrong ObjectId: 'teams']
Но когда я переключать маршруты, как показано ниже:
GET /company/detail controllers.CompanyController.companyDetail
GET /company/:companyId/users-detail controllers.CompanyController.userDetail(companyId: BSONObjectID)
Услуги успешно выполняются. Я до сих пор не понимаю, что такое настоящая проблема. Это проблема с игровой инфраструктурой или что-то не так с моим кодом?