0
這是簡單和愚蠢的,我不能只看到。Haskell mongodb:將二進制值轉換回ByteString
如果一個新的類型定義:
newtype Binary
Constructors
Binary ByteString
Instances:
Eq Binary
Ord Binary
Read Binary
Show Binary
Typeable Binary
Val Binary
我如何解構的二進制值來獲得字節字符串回來?
如果我想將二進制數據保存到mongodb中,比如說一張jpg圖片,我可以從文件系統中讀取ByteString中的Val Binary類型。然後我將它插入到文檔中。
當我從數據庫中讀取數據並將其從文檔中取出時,我最終得到了Binary類型,並且我被它困住了。我無法獲得與ByteString.writeFile一起使用的ByteString類型。
所以跳過所有連接東西的流動是這樣的:
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
謝謝。
謝謝你,謝謝你,謝謝你!我知道這是愚蠢的))那麼,它是通過模式匹配去構造這種新類型的正常方式嗎? –
你也可以newtype Binary = Binary {unBinary :: ByteString},它將爲你創建函數。這是我通常的做法。 –
@mindreader謝謝。如果我自己創建新類型,我會做記錄,但新類型Binary在庫中定義。我認爲應該有一個函數來解構類似於記錄語法。但模式匹配的作品也一樣,我錯過了這一點是愚蠢的。 –