Cypher查询无法从node.js工作,但可以从neo4j控制台工作

时间:2015-09-04 04:55:49

标签: node.js neo4j cypher node-neo4j

我正在尝试使用node-neo4j模块编写一个与neo4j一起使用的node.js应用程序。我正在尝试从nodejs提交查询并发现它无效,所以我尝试从neo4j browser console提交,以便更容易根本导致我的拼写错误,并发现它工作正常那里。关于发生了什么的任何想法?

查询:

Match (a:Paper { uid:26327110, citation:"Seitz A.  \"Moving beyond a binary view of specificity in perceptual learning.\" Journal of vision. 15 12 (2015 Sep 1): 1422.", date:"2015 Sep 1"}) return a

2 个答案:

答案 0 :(得分:2)

您可能应该使用参数,它们可能有助于解决任何编码问题。这看起来像这样:

var query_string = "MATCH (a:Paper {attributes}) RETURN a"

var attributes = {uid: 26327110, citation: "Seitz A. \"Moving beyond a binary view of specificity in perceptual learning.\" Journal of vision. 15 12 (2015 Sep 1): 1422.", date: "2015 Sep 1"};

db.cypherQuery(query_string, {attributes: attributes});

当然,如果您愿意,可以为各个值使用单独的参数。参数不仅可以帮助您不用担心编码,还允许Neo4j缓存查询。此外,如果您从用户参数传递值也可以帮助您防止注入攻击。

答案 1 :(得分:2)

在这种情况下,事实证明我只是一个白痴 - 错误发生是因为我使用新密码创建了一个新数据库,忘了调整我的节点服务器的身份验证。如果你有类似的问题,并在你的节点控制台中看到以下错误:[Error: HTTP Error 401 when running the cypher query against neo4j. undefined: undefined]那么你也有一个白痴案例。正如Kunal在原始问题的评论中建议的那样,请检查您的身份验证。