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

How to get record's "Ref" in FaunaDB predicate function?

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

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

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

write, history_write: the old data, the new data, and a reference to the document to be written.

我改了功能,还是报错。代码:

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

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

q.Query(
  q.Lambda(
    ['old', 'new', 'ref'],
    q.Equals(
      q.Select(["id"], q.CurrentIdentity()),
      "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') returns 一个 Ref 对象,而不是 id