Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure Neo4j蓝图索引.remove()赢得';不承诺_Clojure_Neo4j_Tinkerpop - Fatal编程技术网

Clojure Neo4j蓝图索引.remove()赢得';不承诺

Clojure Neo4j蓝图索引.remove()赢得';不承诺,clojure,neo4j,tinkerpop,Clojure,Neo4j,Tinkerpop,我正在尝试创建自己的tinkerpop.blueprints库的Clojure绑定,但遇到了一个似乎是提交失败的障碍。目前我使用Neo4j作为图形实现。以下是不起作用的特定功能: (defn remove-from-index! ([index-name elm key] (remove-from-index! index-name elm key (property elm key))) ([index-name elm key val] (let [idx

我正在尝试创建自己的tinkerpop.blueprints库的Clojure绑定,但遇到了一个似乎是提交失败的障碍。目前我使用Neo4j作为图形实现。以下是不起作用的特定功能:

(defn remove-from-index!
  ([index-name elm key]
    (remove-from-index!
      index-name elm key (property elm key)))
  ([index-name elm key val]
    (let [idx (index index-name)]
      (tx
        (-> idx
          (.remove (name key) val elm)))
      idx)))
要像这样使用:

(remove-from-index! :users v1 :username)
(remove-from-index! :users v2 :username "foo")
它似乎工作正常,但当我查询索引时,我试图移除的顶点没有被移除。我试着一块一块地分解它,并确定它实际上正在被删除,但只要调用
.commit
,它就会回滚所有内容

涉及的其他功能/宏:

(defn property
  [elm key]
  (-> elm (.getProperty (name key))))

(defmacro tx
  [& body]
  `(try
    (let [val# (do ~@body)]
      (.commit *g*)
      val#)
    (catch Exception e#
      (println (.getMessage e#))
      (.rollback *g*))))

(defn index
  ([^String nomen]
    (index (name nomen) "Vertex"))
  ([^String nomen ^String type]
    (-> *g*
      (.getIndex
        (name nomen)
        (Class/forName (str "com.tinkerpop.blueprints." type))))))

只是澄清一下,您的示例用法似乎缺少
elm
参数,对吗?应该是这样的:
(从索引中删除!:users v:username)
,其中
v
是一个顶点。是吗?是的,我刚刚编辑了这个问题。然而,我放弃了数据库,继续前进,问题从那以后就再也没有出现过。我不知道为什么。可能索引中的k/v不是我试图删除的内容。使用Neo4j,您只需要提供要从索引中删除的节点,但在浏览blueprints API时,除了节点之外,还需要键和值才能从索引中删除。我猜是这样,但我还是不确定。