1

我可以通过以下 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返回一个Set,而不是Ref。然后我有2个问题。

  1. 如何获得搜索结果的文档 Ref?有没有什么办法可以从搜索结果中获取文档引用,索引如RefCollection进行收集,例如如下所示的RefIndex
ret, err := client.Query(f.Delete(f.RefIndex(f.Index("label_search_by_externalID"), externalID)))
  1. 为什么我的获取搜索结果文档的代码运行良好?是否有更好的编码来获取搜索结果文档?

谢谢你的建议!

4

1 回答 1

3

Get 只会返回 1 个结果。如果您从该索引搜索返回多个值,您将遇到问题。我建议使用 Paginate() 函数。这将返回一组结果,然后您可以映射并执行其他功能,例如 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")))
)
于 2020-03-10T01:34:36.003 回答