如何从 Ref in fauna 获取 ID?
How to get an ID from Ref in fauna?
我正在从 faunadb 获取文档,我希望它们的 ID 位于我发送给客户端的负载中。
这就是我获取文档和return它们的数据作为集合的方式
serverClient.query(
q.Map(
q.Paginate(q.Documents(q.Collection('Portfolio')), { size: 999999 }),
q.Lambda(x => q.Get(x))
)
)
.then((ret) => ret.data.map(x => ({ ...x.data, _id: x.ref })))
现在 _id
是 Ref.当我将它登录到控制台时看起来像这样:
Ref(Collection("Portfolio"), "266565241615155713")
像这样 JSON 字符串化它:
{"@ref":{"id":"266565241615155713","collection":{"@ref":{"id":"Portfolio","collection":{"@ref":{"id":"collections"}}}}}}
我基本上需要从那个 Ref 中获取 ID 266565241615155713
。我怎样才能做到这一点?
我试过 x.ref['@ref'].id
但 @ref
未定义。
The documentation这里没帮到我
提前感谢您的任何提示。
在将其转换为 Json 之前,您应该能够使用 ref.id 获取 ID,我相信您目前正在做的就是这种情况: '_id: x.ref',所以只需将其替换为 _id: x.ref.id 就可以了。
将其转换为 Json 后,您将必须执行 jsonRef.['@ref'].id
您还可以 return 一个带有 id
和扩展 ref
的数组,这样,您就不会使用 json 格式(这可能会改变在将来)。您可以实现这一目标,将您的 lambda 更新为 Lambda(x => [ Select('id', x), Get(x) ])
您可以使用match()
函数找到您需要的文档id,然后在JSON[=24=的“ref”属性上调用id()
方法]编辑。例如,假设我想在“用户”集合中获取用户的引用 ID,如下所示:
user = client.query(q.get(q.match(q.index("user_by_name"), "Paul")))
这将 return 一个 JSON 包含一个 Ref 对象,其键为 ["ref"]
,其中包含我们需要的 ID。由此我们可以使用 id()
函数检索 id,如下所示:
print(user["ref"].id())
这会将 id 打印到控制台。您当然可以根据需要将其传递到不同的查询中。
根据此处的 Doc 如何从 Ref
获取 ID
client.query(
q.Let(
{
doc: q.Get(q.Ref(q.Collection("users"), "1")),
},
{
"id": q.Select(["ref", "id"], q.Var("doc")),
}
)
)
我正在从 faunadb 获取文档,我希望它们的 ID 位于我发送给客户端的负载中。
这就是我获取文档和return它们的数据作为集合的方式
serverClient.query(
q.Map(
q.Paginate(q.Documents(q.Collection('Portfolio')), { size: 999999 }),
q.Lambda(x => q.Get(x))
)
)
.then((ret) => ret.data.map(x => ({ ...x.data, _id: x.ref })))
现在 _id
是 Ref.当我将它登录到控制台时看起来像这样:
Ref(Collection("Portfolio"), "266565241615155713")
像这样 JSON 字符串化它:
{"@ref":{"id":"266565241615155713","collection":{"@ref":{"id":"Portfolio","collection":{"@ref":{"id":"collections"}}}}}}
我基本上需要从那个 Ref 中获取 ID 266565241615155713
。我怎样才能做到这一点?
我试过 x.ref['@ref'].id
但 @ref
未定义。
The documentation这里没帮到我
提前感谢您的任何提示。
在将其转换为 Json 之前,您应该能够使用 ref.id 获取 ID,我相信您目前正在做的就是这种情况: '_id: x.ref',所以只需将其替换为 _id: x.ref.id 就可以了。
将其转换为 Json 后,您将必须执行 jsonRef.['@ref'].id
您还可以 return 一个带有 id
和扩展 ref
的数组,这样,您就不会使用 json 格式(这可能会改变在将来)。您可以实现这一目标,将您的 lambda 更新为 Lambda(x => [ Select('id', x), Get(x) ])
您可以使用match()
函数找到您需要的文档id,然后在JSON[=24=的“ref”属性上调用id()
方法]编辑。例如,假设我想在“用户”集合中获取用户的引用 ID,如下所示:
user = client.query(q.get(q.match(q.index("user_by_name"), "Paul")))
这将 return 一个 JSON 包含一个 Ref 对象,其键为 ["ref"]
,其中包含我们需要的 ID。由此我们可以使用 id()
函数检索 id,如下所示:
print(user["ref"].id())
这会将 id 打印到控制台。您当然可以根据需要将其传递到不同的查询中。
根据此处的 Doc 如何从 Ref
client.query(
q.Let(
{
doc: q.Get(q.Ref(q.Collection("users"), "1")),
},
{
"id": q.Select(["ref", "id"], q.Var("doc")),
}
)
)