如何删除在 FaunaDB 中搜索到的文档?

How to delete a document found by a search in the FaunaDB?

我可以通过以下 golang 代码获取搜索到的文档:

ret, err := client.Query(f.Get(f.MatchTerm(f.Index("label_search_by_externalID"), externalID)))

然后,我尝试删除搜索到的文档,方法如下:

ret, err := client.Query(f.Delete(f.MatchTerm(f.Index("label_search_by_externalID"), externalID)))

但是,这段代码出现错误:

Response error 400. Errors: [delete](invalid argument): Ref expected, Set provided.

我很困惑,API 文档,GetDelete 都请求 Ref 作为参数, 和 MatchTerm returns 一个集合,而不是参考。 那我有2个问题。

  1. 如何获取搜索结果的文档Ref? 有什么办法可以从搜索结果中获取文档ref,Index like RefCollection 用于collection,例如like RefIndex 如下?
ret, err := client.Query(f.Delete(f.RefIndex(f.Index("label_search_by_externalID"), externalID)))
  1. 为什么我的获取搜索结果文档的代码运行良好?有没有更好的获取搜索结果文档的编码?

感谢您的建议!

获取只会 return 1 个结果。如果您有多个值 return 来自该索引搜索,您将遇到问题。我建议使用函数 Paginate()。这将 return 一组结果,然后您可以映射这些结果并执行其他功能,例如 get() 或 delete()。我强烈建议您查看以下教程 (https://docs.fauna.com/fauna/current/tutorials/indexes/pagination)。

这是删除找到的一页文档的伪代码。您可以向上或向下调整页面大小:

Map(
  Paginate(Match(Index("label_search_by_externalID"), true)),
  Lambda("X", Delete(Var("X")))
)