如何使用我的 Persistent 模型中的字段作为我的路由文件中的路径片段?
How can I use a field from my Persistent model as a path piece in my routes file?
我有一个像这样的持久模型:
Organization sql=organizations
Id UUID default=uuid_generate_v1mc
name Text
UniqueOrganizationName name
deriving Show Eq Typeable
我想在我的 Yesod routes
文件中使用组织名称,如下所示:
/#OrganizationName/onboarding/business/about OnboardingBusinessAboutR POST
使用 OrganizationName
或 UniqueOrganizationName
给我这个错误:
/Users/maximiliantagher/Documents/Mercury/hs/mercury-web-backend/src/Foundation.hs:41:1: error:
• Data constructor ‘OrganizationName’ cannot be used here
(Perhaps you intended to use TypeInType)
• In the type ‘OrganizationName’
In the definition of data constructor ‘OnboardingBusinessAboutR’
In the data instance declaration for ‘Route’
我可以使用新类型作为解决方法,只是想知道是否有必要。
我认为缺少 PathPiece
实例是个问题,但如果只是这样,那么错误将是 No instance for (PathPiece ...)
.
使用 OrganizationName
或 UniqueOrganizationName
都可以。
OrganizationName
类型是一个构造函数,因为这是在像 selectList
这样的持久性机器中使用的。实际上,name
是类型 Text
的 Organization
构造函数的参数,因此您只需要在路由中使用 #Text
。
我有一个像这样的持久模型:
Organization sql=organizations
Id UUID default=uuid_generate_v1mc
name Text
UniqueOrganizationName name
deriving Show Eq Typeable
我想在我的 Yesod routes
文件中使用组织名称,如下所示:
/#OrganizationName/onboarding/business/about OnboardingBusinessAboutR POST
使用 OrganizationName
或 UniqueOrganizationName
给我这个错误:
/Users/maximiliantagher/Documents/Mercury/hs/mercury-web-backend/src/Foundation.hs:41:1: error:
• Data constructor ‘OrganizationName’ cannot be used here
(Perhaps you intended to use TypeInType)
• In the type ‘OrganizationName’
In the definition of data constructor ‘OnboardingBusinessAboutR’
In the data instance declaration for ‘Route’
我可以使用新类型作为解决方法,只是想知道是否有必要。
我认为缺少 PathPiece
实例是个问题,但如果只是这样,那么错误将是 No instance for (PathPiece ...)
.
使用 OrganizationName
或 UniqueOrganizationName
都可以。
OrganizationName
类型是一个构造函数,因为这是在像 selectList
这样的持久性机器中使用的。实际上,name
是类型 Text
的 Organization
构造函数的参数,因此您只需要在路由中使用 #Text
。