如何在 faunadb 中加入 collections?

how to join collections in faunadb?

我想在我正在执行的查询中获取嵌套的 ref 值,但默认响应返回其他 collection 的 ref。考虑这个最小的例子;这里有 usercoin 型号,在 "users""coins" collections

user {     // ref: 123456
  name: foo
  location: bar
}
coin {     // ref: 124457
  amount: 5457
  awardedTo: Ref(Collection("users"), "123456")
}

当我运行这个查询

q.Get(q.Ref(q.Collection("coins"), "124457"))

响应是这样的:

{
  data: {
    amount: 5457,
    awardedTo: @ref: {id: "123456", collection: {…}}
  },
  ref: @ref: {id: "124457", collection: {…}},
  ts: 1622547855525255
}

但是如何在同一个查询中获取嵌套的 user 的值以获得这样的响应:

{
  data: {
    amount: 5457,
    awardedTo: {
      name: foo,
      location: bar
    }
  },
  ref: @ref: {id: "124457", collection: {…}},
  ts: 1622547855525255
}

我已经阅读了Join的文档,但在这种情况下没有帮助,也尝试过这种方式,但也没有用:

q.Let({
  coin: q.Get(q.Ref(q.Collection("coins"), '124457'))
},
  q.Union(
    q.Get(q.Select(["data","awaredTo"], q.Var("coin"))),
    q.Var("coins")
  )
)

您可以使用此 FQL:

Let(
  {
    coin: Select(['data'],Get(Ref(Collection("coin"), "1"))),
    user: Select(['data'],Get(Select(['awardedTo'],Var('coin'))))
  },
  Merge(Var('coin'),{awardedTo:Var('user')})
)

它从硬币中检索数据,提取用户引用并合并在一起。

路易吉