如何从动物群中的 Ref 获取 ID?
Posted
技术标签:
【中文标题】如何从动物群中的 Ref 获取 ID?【英文标题】:How to get an ID from Ref in fauna? 【发布时间】:2020-09-12 23:20:11 【问题描述】:我正在从区区数据库中获取文档,并且我希望它们的 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 中获取 ID 266565241615155713
。我怎样才能做到这一点?
我试过x.ref['@ref'].id
但@ref
是未定义的。
The documentation 在这里没有帮助我
提前感谢任何提示。
【问题讨论】:
【参考方案1】:在转换为 Json 之前,您应该能够使用 ref.id 获取 id,我相信这是您当前正在执行的情况:'_id: x.ref',所以只需替换使用 _id: x.ref.id 应该没问题。
将其转换为 Json 后,您必须执行 jsonRef.['@ref'].id
【讨论】:
?♂️ duh - 应该自己尝试一下。工作精美。非常感谢!【参考方案2】:您还可以返回一个带有id
和扩展ref
的数组,这样您就不会承诺使用 json 格式(将来可能会更改)。您可以实现这一点,将您的 lambda 更新为 Lambda(x => [ Select('id', x), Get(x) ])
【讨论】:
【参考方案3】:您可以使用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 打印到控制台。您当然可以根据需要将其传递给不同的查询。
【讨论】:
【参考方案4】:根据Doc here 如何从Ref
获取 id
client.query(
q.Let(
doc: q.Get(q.Ref(q.Collection("users"), "1")),
,
"id": q.Select(["ref", "id"], q.Var("doc")),
)
)
【讨论】:
以上是关于如何从动物群中的 Ref 获取 ID?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 IOS 中的 PHPhotoLibrary 获取 ref url?