neovis.js 版本 2.1.0 与 neo4j 版本 5.12.0 不兼容吗?

Is neovis.js version 2.1.0 incompatible with neo4j version 5.12.0?

提问人:user2182284 提问时间:10/16/2023 更新时间:10/17/2023 访问量:64

问:

我正在使用 neovis.js 版本 2.1.0 和 neo4j 版本 5.12.0。当我尝试根据示例进行访问时,neo4j 服务器返回以下错误:

Neo4jError: The property existence syntax `... exists(variable.property)` is no longer supported. Please use `variable.property IS NOT NULL` instead. (line 1, column 17 (offset: 16))
"MATCH (n) WHERE exists(n.pagerank)"

这些版本之间是否存在已知的不兼容问题?

我的vue3.js代码如下:

<template>
  <h3>graph demo</h3>
  <div id="graph"></div>
</template>

<script setup>
import NeoVis from "neovis.js";
import { onMounted } from "vue";

const config = ref({
  containerId: "graph",
  neo4j: {
    serverUrl: "bolt://localhost:7687",
    serverUser: "neo4j",
    serverPassword: "neo4j_password",
  },
  labels: {},
  relationships: {},
  initialCypher: "MATCH (n) return n",
});

nMounted(() => {
  const vis = new NeoVis(config);
  vis.render();
});
</script>

<style scoped></style>
NEO4J 版本 兼容性

评论


答:

0赞 fbiville 10/16/2023 #1

自 Neo4j 5.0 以来,exists 已更改为仅检查图形模式是否存在,而不检查属性。

neovis.js 必须改用以下变体:

MATCH (n) WHERE n.pagerank IS NOT NULL

注意:您可以阅读 Neo4j 4.4 的 exists 文档,它确实也适用于属性。

0赞 cybersam 10/17/2023 #2

Neovis.js 源代码包含以下代码片段defaults.ts

neo4j: {
    initialQuery: `MATCH (n) WHERE exists(n.pagerank)
                    WITH (n), RAND() AS random
                    ORDER BY random LIMIT 3000
                    OPTIONAL MATCH (n)-[r]-(m)
                    //WITH n,r,m WHERE exists(n.pagerank) AND exists(m.pagerank) AND exists(m.community)
                    RETURN n, r, m;`,
    ...

这似乎是您错误的原因。您可能应该为此创建一个问题

0赞 user2182284 10/17/2023 #3

感谢您的帮助。

Neovis.js 与 Neo4j 5.12.0 兼容,除了一些不推荐使用的语法,如上所述。exists

我的错误源于不正确的代码。它应该是.我正在使用 Vue3.js。如果没有 ,Neovis.js 无法初始化配置,默认为包含 .当我添加时,该错误已解决,并且将执行我的初始Cypher子句。const vis = new NeoVis(config)const vis = new NeoVis(config.value).valueexists.valueexists