如何在动物群中从 Ref 获取 ID?



我正在从faunadb获取文档,我希望他们的ID在我发送给客户端的有效负载中。

这就是我获取文档并将其数据作为集合返回的方式


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(Collection("Portfolio"), "266565241615155713")

就像这样,当JSON字符串化它时:

{"@ref":{"id":"266565241615155713","collection":{"@ref":{"id":"Portfolio","collection":{"@ref":{"id":"collections"}}}}}}

我基本上需要从该 Ref 获取 ID266565241615155713。我该怎么做? 我尝试了x.ref['@ref'].id@ref未定义。 文档在这里对我没有帮助

提前感谢您的任何提示。

在将 id转换为 Json 之前,您应该能够使用ref.id获取 id,我相信您目前正在这样做的情况就是这样:"_id:x.ref",所以只需将其替换为 _id:x.ref.id 应该没问题。

一旦你把它转换为Json,你将不得不做jsonRef。['@ref'].id

您还可以返回一个带有id和扩展ref的数组,这样,您就不会提交 json 格式(将来可能会更改(。您可以做到这一点,将您的 lambda 更新为Lambda(x => [ Select('id', x), Get(x) ])

您可以使用match()函数查找需要其 id 的文档,然后对返回的 JSON 的 "ref" 属性调用id()方法。例如,假设我想在"用户"集合上获取用户的 ref id,如下所示:

user = client.query(q.get(q.match(q.index("user_by_name"), "Paul")))

这将返回一个包含 Ref 对象的 JSON,其键为["ref"],其中包含我们需要的 id。由此我们可以使用id()函数检索 id,如下所示:

print(user["ref"].id())

这会将 id 打印到控制台。当然,您可以根据需要将其传递到其他查询中。

根据这里的文档,如何从Ref中获取id

client.query(
q.Let(
{
doc: q.Get(q.Ref(q.Collection("users"), "1")),
},
{
"id": q.Select(["ref", "id"], q.Var("doc")),
}
)
)

最新更新