javascript - node js + neo4j 的奇怪反应
问题描述
我试图用 neo4j 和 nodejs 做一个简单的应用程序,但我只是陷入了这个奇怪的反应。我在 neo4j 上插入东西并且它可以工作,但是当我尝试使用 cypher 来捕获其他节点属性时,我发现了这个错误:
Result {
_stack: '\n at captureStacktrace (/home/jake/node_modules/neo4j-driver/lib/v1/result.js:199:15)\n at new Result (/home/jake/node_modules/neo4j-driver/lib/v1/result.js:65:19)\n at Session._run (/home/jake/node_modules/neo4j-driver/lib/v1/session.js:152:14)\n at Session.run (/home/jake/node_modules/neo4j-driver/lib/v1/session.js:130:19)\n at /home/jake/Área de Trabalho/simples/index.js:16:31\n at Layer.handle [as handle_request] (/home/jake/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/jake/node_modules/express/lib/router/route.js:137:13)\n at Route.dispatch (/home/jake/node_modules/express/lib/router/route.js:112:3)\n at Layer.handle [as handle_request] (/home/jake/node_modules/express/lib/router/layer.js:95:5)\n at /home/jake/node_modules/express/lib/router/index.js:281:22',
_streamObserver:
SessionStreamObserver {
_fieldKeys: null,
_fieldLookup: null,
_queuedRecords: [],
_tail: null,
_error: null,
_hasFailed: false,
_observer: null,
_conn: null,
_meta: {},
_session:
Session {
_mode: 'WRITE',
_readConnectionHolder: [Object],
_writeConnectionHolder: [Object],
_open: true,
_hasTx: false,
_lastBookmark: [Object],
_transactionExecutor: [Object] } },
_p: null,
_statement: 'MATCH (p:Person) WHERE p.name =\'$name\' return p.age',
_parameters: { name: 'Jake' },
_metaSupplier: [Function],
_connectionHolder:
ConnectionHolder {
_mode: 'WRITE',
_connectionProvider:
DirectConnectionProvider {
_address: [Object],
_connectionPool: [Object],
_driverOnErrorCallback: [Function: bound _driverOnErrorCallback] },
_referenceCount: 1,
_connectionPromise: Promise { <pending> } } }'
说清楚:我只想按名称找到一个节点,然后显示它的年龄。我期待一个Json数据。
我的代码:
`const express = require ("express");
const app = express();
const bodyParser = require('body-parser');
app.use(bodyParser());
//Conec
const neo4j = require('neo4j-driver').v1;
const driver = neo4j.driver('bolt://localhost:7687', neo4j.auth.basic('neo4j', '123'));
const session = driver.session();
// Data Manipulation
app.post('/', function (req, res){
var find = req.body.pesquisa;
const result_dois = session.run("MATCH (p:Person) WHERE p.name ='$name' return p.age", {name:find});
console.log(result_dois);
res.end();
});
如果有人可以帮助...
解决方案
MATCH (p:Person) WHERE p.name ='$name' return p.age
没有必要将$name 放在引号内。如果这样做,它不会取参数中传递的值,而是将其视为值为“$name”的字符串。
更正后的查询是:
MATCH (p:Person) WHERE p.name =$name return p.age
推荐阅读
- python - pygame中的面具之间的碰撞
- sql - SQL查询到节点红色折线图
- c - 统一测试时忽略用户输入
- python - 如何退出在多处理池中运行的 starmap_async 进程?
- flutter - 如何在开发过程中同时使用 Android 和 IOS 模拟器来测试我的 Flutter 应用程序?
- android - 嗨,我不知道如何修复这个游标错误,“java.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行,第 1 行。”
- python-3.x - 使用复选框/按钮激活的 Python 代码
- python - TF 2.0 GPU coingure,如何配置tensorflow-gpu 2.0和cuda,cudnn在pycharm中创建另一个虚拟环境后
- azure - 通过 Azure CLI 下载 Azure 安全建议
- kendo-ui-angular2 - kendo ui angular grid - 当用户点击输入键而不是点击行时如何离开行