如何在 faunadb 中加入 collections?
how to join collections in faunadb?
我想在我正在执行的查询中获取嵌套的 ref
值,但默认响应返回其他 collection 的 ref
。考虑这个最小的例子;这里有 user
和 coin
型号,在 "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')})
)
它从硬币中检索数据,提取用户引用并合并在一起。
路易吉
我想在我正在执行的查询中获取嵌套的 ref
值,但默认响应返回其他 collection 的 ref
。考虑这个最小的例子;这里有 user
和 coin
型号,在 "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')})
)
它从硬币中检索数据,提取用户引用并合并在一起。
路易吉