如果文档存在则更新,否则在 faunadb 中创建一个新文档

gm_*_*gm_ 3 faunadb

尝试更新文档(如果存在),否则创建具有相同数据的文档。我也需要使用 anIndex而不是 direct来做到这一点Ref

在我确定它已经存在的情况下,使用它来更新。但在这种情况下,由于无法确定是否Ref存在,它会引发错误。尝试检查是否Ref存在,但这不起作用,因为Get失败。

q.Update(
  q.Select(["ref"], q.Get(q.Match(q.Index("fromUUID"), request.UUID))),
  {
    data: request
  }
)
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。谢谢。

cjo*_*jol 5

检查 Ref 是否存在是正确的方法,但您应该使用q.Exists而不是Get(这会在您发现时失败。您也可以使用q.Let来避免一些重复。类似于以下内容:

q.Let({
    match: q.Match(q.Index('fromUUID'), request.UUID),
    data: { data: request }
  },
  q.If(
    q.Exists(q.Var('match')),
    q.Update(q.Select('ref', q.Get(q.Var('match'))), q.Var('data')),
    q.Create(q.Collection('Foos'), q.Var('data'))
  )
)
Run Code Online (Sandbox Code Playgroud)