【问题标题】:How to delete a document found by a search in the FaunaDB?如何删除在 FaunaDB 中搜索到的文档?
【发布时间】:2020-06-21 21:58:23
【问题描述】:

我可以得到如下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。 然后我有两个问题。

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

感谢您的建议!

【问题讨论】:

    标签: go faunadb


    【解决方案1】:

    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")))
    )
    

    【讨论】:

    • 嗨,约翰!我可以用你建议的方式删除它!谢谢!
    猜你喜欢
    • 2019-12-03
    • 2020-10-29
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多