这是我无法看到的简单而愚蠢的事情。
如果定义了新类型:
newtype Binary
Constructors
Binary ByteString
Instances:
Eq Binary
Ord Binary
Read Binary
Show Binary
Typeable Binary
Val Binary
如何解构 Binary 值以取回 ByteString?
如果我想将二进制数据保存到 mongodb 中,比如 jpg 图片,我可以从文件系统读取的 ByteString 构造 Val Binary 类型。然后我将它插入到文档中。
当我从数据库中读回数据并将其从文档中取出时,我最终得到了 Binary 类型,而且我很坚持。我无法恢复 ByteString 类型以与 ByteString.writeFile 一起使用。
所以跳过所有连接的东西,流程是这样的:
file <- B.readFile "pic.jpg" -- reading file
let doc = ["file" =: (Binary file)] -- constructing a document to be inserted
run $ insert_ "files" doc -- insert the document
r <- run $ fetch (select [] "files") -- get Either Failure Document back from db
let d = either (error . show) (id ) r -- Get the Document out
let f = at "file" d :: Binary -- Get the data out of the document of type Binary
谢谢你。