【发布时间】:2017-04-17 23:48:57
【问题描述】:
我将 Azure 的 DocumentDb 与 F# 一起使用,并且我已经能够创建新文档、加载所有文档以及按 Id 加载文档,并应用了 where 过滤器。但我无法替换任何文档,而且 F# 中的文档很少。
这是我用来更新文档的函数:
let update (c : MyObject) =
let cli = createClient()
cli.ReplaceDocumentAsync(documentUri(), c)
|> Async.AwaitTask
|> ignore
c
createClient 只是创建一个DocumentClient 的新实例,使用相同的参数让我加载和保存新文档。同样,documentUri() 也可以在其他函数中使用。
我的猜测是我实际上从任务中得到了有用的响应,我忽略了它(基于我看到的示例)。然而,事实证明,试图获得这种响应是困难的。
这是我尝试使用的一种方法,但最终得到了一种我似乎无法转换的类型:
let update2 ( c : MyObject) =
let cli = createClient()
let updatedDoc = async {
return! cli.ReplaceDocumentAsync(documentUri(), c) |> Async.AwaitTask
}
updatedDoc
这里,updatedDoc 的类型是 Async<ResourceResponse<Document>>。我似乎无法找到将其从 Async 包装器中取出的方法,一旦我这样做了,我不确定如何将 Document 变成 MyObject。
所以,总结一下:
- 问题是我无法更新文档
- 我怀疑我从忽略的任务中收到错误消息或其他内容。
【问题讨论】:
标签: azure f# azure-cosmosdb