我正在从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")),
}
)
)