Haskell:在Persist中使用元组.Sql-数据库为PersistSqlField



我创建了一个数据库,希望在其中有一个[(String,[String])]类型的字段。

    share [mkPersist sqlSettings, mkMigrate "migrateAll"][persistLowerCase|
    ConfigDB
        numberOfParticipants Int
        groupId              Int
        memberList           [(String,[String])]
        deriving Show
    |]

然而,我收到一条错误消息:

尝试运行编译时代码时出现异常:无效字段类型>"[(String,[String])]"PSFail PSFail"PSFail\"(\\"\\",\\",Nothing)\"

错误似乎是由使用元组引起的,因为[String]工作得很好,但如果我写(String,String),编译器告诉我:

"不在作用域中:类型构造函数或类String,也许你指的是弦乐(从前奏曲中导入)"

在数据库中。坚持Sql我找到(PersistFieldSql a,PersistFieldSql b)=>PersistFieldSql(a,b)是一个实例,因此它应该可以工作。

此外,导入数据。Tuple没有帮上忙。我已导入数据库。坚持当然是Sqlite。

提前感谢

Sophia

在持久定义语法中嵌入复杂类型很棘手(有时甚至不可能)。我的建议是在Haskell代码中定义一个类型同义词,例如:

type MemberList = [(String, [String])]

然后在定义中使用该类型。

最新更新