我正在使用Azure的DocumentDb
和F#,并且我已经能够创建新文档,加载所有文档,并通过Id加载文档,并应用where
过滤器。但我无法替换任何文档,并且F#中的文档很少。DocumentDb上没有被替换的文档
这是我使用的更新文档的功能:
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
这里,是Async<ResourceResponse<Document>>
类型。我似乎无法找到一种方法将其从Async
包装中取出,并且一旦我做了,我不知道如何将Document
转换为MyObject
。
因此,简言之:
- 的问题是,我无法更新文件
- 我怀疑我得到一个错误信息或一些东西是我忽略的任务。
是的,我知道他们是不同的,但我的C#经验让我对“RunSynchronously”命令保持警惕。在你给它的上下文中更有意义。我能够得到一个令人困惑的错误,解决这个问题,现在我可以更新文档。谢谢! – Max
很高兴我能帮到你。 –