微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法通过 FaunaDB 中的索引更新文档

如何解决无法通过 FaunaDB 中的索引更新文档

我正在尝试使用 FQL 使用 FaunaDB 集合中的索引更新文档。

MarshalAs

这个查询给了我以下错误

Update(
  Match(
    Index('users_by_id'),'user-1'
  ),{
    data: {
      name: 'John'
    }
  }
)

如何使用索引 Error: [ { "position": [ "update" ],"code": "invalid argument","description": "Ref expected,Set provided." } ] 更新文档?

解决方法

Match 返回一个集合引用,而不是一个文档引用,因为可能有零个或多个匹配的文档。

如果您确定有一个匹配的文档,您可以使用 Get。当您使用集合引用(而不是文档引用)调用 Get 时,将检索集合的第一项。由于 Update 需要文档引用,因此您可以使用 Select 检索获取的文档引用。

例如:

Update(
  Select(
    "ref",Get(Match(Index('users_by_id'),'user-1'))
  ),{
    data: {
      name: 'John'
    }
  }
)

如果你有多个匹配,你应该使用Paginate将集合“实现”为匹配文档的数组,然后Map在数组上执行批量更新:>

Map(
  Paginate(
    Match(Index('users_by_id'),'user-1')
  ),Lambda(
    "ref",Update(
      Var("ref"),{
        data: {
          name: "John",}
      }
    )
  )
)

注意:为此,您的索引必须有一个空的 values 定义,或者它必须明确地将 ref 字段定义为唯一的值。如果您的索引返回多个字段,则必须更新 Lambda 函数以接受与索引的 values 定义中定义的相同数量的参数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。