gpt4 book ai didi

Haskell Riak 驱动程序 : Making a simple 'put' operation

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

我正在尝试使用 Haskell 驱动程序向 Riak 介绍自己,但我陷入了简单的 put 操作。我对 put 函数的签名感到困惑。并且没有任何一个例子。

所以有了这个签名:

put :: (FromJSON c, ToJSON c, Resolvable c) => Connection -> Bucket 
-> Key -> Maybe VClock -> c -> W -> DW -> IO (c, VClock)

我有几个问题。

什么是 Maybe Vlock?我是否必须以某种方式生成它,或者只在那里指定 Nothing 就足够了?为什么我会在返回的元组中得到这个 VLock?

我是否必须为输入的每个简单值编写 FromJSON 和 ToJSON 实例,即使它是一个简单的字符串值?就像如果我想将值“Stitch”与键“Name”一起放置,我该怎么做?

什么是Resolvable实例?如何使文本或字符串值可解析?我知道我必须定义 resolve 函数,但我不太明白它的含义以及如何执行它。

最佳答案

也许 VClock 是您正在更新的对象的 VClock(Just vclock)或 Nothing。如果数据库中没有该键的对象,您可以在此处指定 Nothing

包装在 IO 中的 VClock (IO (c, VClock)) 是插入对象的 VClock,从数据库返回。

您的数据类型需要一个 ToJSON 和一个 FromJSON 实例才能使用该 put 函数。 Aeson有自动编写此内容的说明。您可以使用 Network.Riak.Value 模块存储非 JSON 数据,但这比较复杂。

Resolvable 用于解析两个同级,看起来像这样,其中 abMyDataType:

实例可解析的 MyDataType 其中
解析a b = a

理想情况下,您的解析函数会执行比仅选择 ab 更智能的操作,因为顺序无法保证,并且如果有多个同级,则可能会被多次调用。

here这是一些用于创建 Riak 连接池的代码,您可能会觉得有用。

你最终会得到如下所示的结果:

put conn bucket key Nothing value Quorum Quorum

其中value是您的数据。更多关于Quorum here .

关于Haskell Riak 驱动程序 : Making a simple 'put' operation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23210207/

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