【问题标题】:Getting the next node id for a Neo4j Node using the REST API使用 REST API 获取 Neo4j 节点的下一个节点 ID
【发布时间】:2013-06-29 17:28:45
【问题描述】:

编辑

当我在谈论节点和节点 id 时,我特别是在谈论 Neo4j 表示的节点而不是 Node.js 中的节点


我正在使用 REST API 之上的 thingdom 包装器在 Neo 之上构建一个应用程序,并且我正在尝试添加我自己的自定义 id 属性,该属性将是要在 URL 中使用的 id 的哈希值例如。

我目前正在做的是创建节点,然后在返回 id 后对其进行散列处理并将其保存回节点,因此实际上我调用 REST API 两次以创建单个节点。

这是一个长镜头,但有没有办法使用 REST API 从 Neo 获取可靠的下一个 id,以便我可以在一个请求中完成所有这些操作。

如果没有,有人知道我在做什么的更好方法吗?

【问题讨论】:

    标签: node.js neo4j node-neo4j


    【解决方案1】:

    neo4j 节点的内部 id 不应该用于外部接口,如 documentation 中所述。这尤其意味着尝试猜测下一个 id 并不是一个好主意。

    建议使用特定于应用程序的 id 来引用节点,如果您使用 UUIDs(尤其是 uuid 类型 4),那么冲突的可能性很小,您可以在创建节点时计算它们,然后再将它们存储到数据库中。

    【讨论】:

    • 嗨,Thomas 感谢您的回答,问题是 uuid 并不是我们真正使用的,我们使用的是 id 的简单哈希。您的方法很有意义,也是我们最初采用的方法,但就像我说的那样,我们现在使用哈希而不是 id。 API 处于创建初期,可能会再次发生变化。
    • 那么你将需要这两个电话,我认为,因为没有确定的方法来告诉你会得到什么 id。
    【解决方案2】:

    出于好奇,我能问你为什么需要将 Id 存储在 Node 中吗?

    但无论如何,在 Node.js 中调用一系列 API 是很常见的。而且您会看到 Neo4j 需要不止一次。

    如果你还没有使用它,我只能建议你看看 Async:https://github.com/caolan/async

    尤其是“瀑布”方法,它允许您调用多个使用上一次调用结果的 API。

    【讨论】:

    • 嗨,老实说,代码已经足够抽象,不需要异步库,回调是有限的,如果它太深,它就会被分解。我只是在寻找一种不必两次击中 Neo 的方法。将其存储在数据库中的想法意味着我可以一次性将其全部提取出来,而不是每次都重新生成它,但这是值得一看的。
    猜你喜欢
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2012-04-12
    相关资源
    最近更新 更多