如何在 FaunaDB 谓词函数中获取记录的“Ref”?

问题描述

我正在尝试准备“写入”谓词函数。这个想法是允许用户只更改他自己的个人资料。我正在比较 Token 中的“id”并记录“Ref”。 按照逻辑,它应该像这样工作:

  q.Lambda(
    ['old','new'],q.Equals(
      q.Select(["id"],q.CurrentIdentity()),q.Select(['ref'],q.Var('old'))
    )
  )
)

但它没有:“错误:执行操作的权限不足。” 通过“谓词函数”文档:

write、history_write:旧数据、新数据和对要写入的文档的引用

我更改了功能,但错误仍然出现。代码:

q.Query(
  q.Lambda(
    ['old','new','ref'],q.Var('ref')
    )
  )
)

我还尝试将用户 ID 硬编码到此函数中,并且效果很好:

q.Query(
  q.Lambda(
    ['old',"295870713291604487"    
    )
  )
)

我做错了什么?

解决方法

试试这个:

q.Query(
  q.Lambda(
    ['old','new','ref'],q.Equals(
      q.CurrentIdentity(),q.Var('ref')
    )
  )
)

与此类似:https://github.com/Vadorequest/rwa-faunadb-reaflow-nextjs-magic/blob/main/fauna/roles/Editor.ts#L73-L81

q.Var('ref') 返回一个 Ref 对象,而不是一个 id

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...