gpt4 book ai didi

haskell - 输入已自动添加引号

转载 作者:行者123 更新时间:2023-12-02 15:27:16 25 4
gpt4 key购买 nike

我正在使用 Yesod 编写个人备份系统,并遇到一个有趣的问题。我在 Haskell 方面相对缺乏经验,所以我确信这些都不是最佳的。

这是我的处理程序之一:

postHostR :: Text -> RcPath -> Handler Text
postHostR hostName f = do
hostId <- insertIfDontExist hostName
tBody <- (T.pack . show) <$> getRawRequest
time <- lift getCurrentTime
newId <- runDB $ insert $ RcFile hostId tBody (makePath f) time
return $ T.pack $ show newId

我从数据库检索的任何文本都会自动添加双引号。我假设这是某种 XSS 安全性,但我并不担心这一点,因为我不会渲染页面。引号实际上似乎并不是文本的一部分(我尝试只删除第一个和最后一个字符,但这似乎并没有真正删除引号)。

谢谢!

最佳答案

此问题的常见原因是您有一个字符串,并且在不需要时对其调用了 show 。 (最典型的是,当有人真正想要putStrLn x时,他们会print x。)

就您而言,我不确定类型签名,但我怀疑您的最后一行可以更改

return $ T.pack $ show newId

只是

return newId

我怀疑 newId 已经是已经 Text,因此调用 show 只会在它周围添加不​​需要的引号(并将其转换为 String,然后使用 T.pack 将其转换回 Text)。如果你只是返回它,它可能会起作用。

(话又说回来,我可能完全错误地理解了类型签名;从这里很难看出。)

关于haskell - 输入已自动添加引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47403736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com