Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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/4/unix/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
Neo4J-通过JavaScript连接时不创建节点_Javascript_Node.js_Neo4j - Fatal编程技术网

Neo4J-通过JavaScript连接时不创建节点

Neo4J-通过JavaScript连接时不创建节点,javascript,node.js,neo4j,Javascript,Node.js,Neo4j,我试图在node.js应用程序中向neo4j数据库添加一个节点,代码似乎执行得很好,但没有创建任何节点 这是我的密码: var neo4j = require('neo4j-driver'); // the rest of my program const driver = new neo4j.driver( "bolt://localhost:7687", neo4j.auth.basic(neouser, neopass) ); const session = driver.s

我试图在node.js应用程序中向neo4j数据库添加一个节点,代码似乎执行得很好,但没有创建任何节点

这是我的密码:

var neo4j = require('neo4j-driver');

// the rest of my program 

const driver = new neo4j.driver(
  "bolt://localhost:7687",
  neo4j.auth.basic(neouser, neopass)
);
const session = driver.session();
var cypher =
  "MERGE (b:TRIGGER {name:'" +
  rname +
  "'}) MERGE (c:FIELD{name:'" +
  trigger +
  "'}) MERGE (b)<-[:ACTIVATES]-(c)";
try {
  const result = session.run(cypher);
  console.log(result);
} finally {
  console.log("finally");
  session.close();
}
driver.close();

以及错误结果:

Result {
_stack: '\n' +
'    at captureStacktrace (C:\\NGToolbox\\NGToolBox\\node_modules\\neo4j-driver\\lib\\result.js:263:15)\n' +
'    at new Result (C:\\NGToolbox\\NGToolBox\\node_modules\\neo4j-driver\\lib\\result.js:68:19)\n' +
'    at Session._run (C:\\NGToolbox\\NGToolBox\\node_modules\\neo4j-driver\\lib\\session.js:174:14)\n' +
'    at Session.run (C:\\NGToolbox\\NGToolBox\\node_modules\\neo4j-driver\\lib\\session.js:135:19)\n' +
'    at C:\\NGToolbox\\NGToolBox\\routes\\bizrulevis.js:261:30\n' +
'    at Layer.handle [as handle_request] (C:\\NGToolbox\\NGToolBox\\node_modules\\express\\lib\\router\\layer.js:95:5)\n' +
'    at next (C:\\NGToolbox\\NGToolBox\\node_modules\\express\\lib\\router\\route.js:137:13)\n' +
'    at Route.dispatch (C:\\NGToolbox\\NGToolBox\\node_modules\\express\\lib\\router\\route.js:112:3)\n' +
'    at Layer.handle [as handle_request] (C:\\NGToolbox\\NGToolBox\\node_modules\\express\\lib\\router\\layer.js:95:5)\n' +
'    at C:\\NGToolbox\\NGToolBox\\node_modules\\express\\lib\\router\\index.js:281:22',
  _streamObserverPromise: Promise { <pending> },
  _p: null,
  _query: "MERGE (b:TRIGGER {name:'DELETEME.1'}) MERGE (c:FIELD{name:'4001'}) MERGE (b)<-[:ACTIVATES]-(c)",
  _parameters: {},
  _connectionHolder: ConnectionHolder {
    _mode: 'WRITE',
    _database: '',
    _bookmark: Bookmark { _values: [] },
    _connectionProvider: DirectConnectionProvider {
      _id: 3,
      _config: [Object],
      _log: [NoOpLogger],
      _userAgent: 'neo4j-javascript/0.0.0-dev',
      _authToken: [Object],
      _connectionPool: [Pool],
      _openConnections: [Object],
      _address: [ServerAddress]
    },
    _referenceCount: 1,
    _connectionPromise: Promise { <pending> }
  }
}
finally
当我进入Neo4j时,db仍然是空的

我已经确认它是活动的,我可以使用相同的密码创建节点,连接正在安全日志中建立,并且没有因为un/pw而失败。一切看起来都很完美,除了整个“无创造”问题

谢谢你的建议


编辑:添加了驱动程序调用,并从代码段范围外关闭驱动程序

假设定义了neouser、neopass、rname和trigger,则此代码应该适用于您:

const neo4j = require('neo4j-driver');

async function doIt() {
  const driver = neo4j.driver(
    "bolt://localhost",
    neo4j.auth.basic(neouser, neopass)
  );
  const session = driver.session();

  try {
    await session.writeTransaction(async txc => {
      var result = await txc.run(
        `MERGE (b:TRIGGER {name: $rname})
         MERGE (c:FIELD {name: $trigger})
         MERGE (b)<-[:ACTIVATES]-(c)
         RETURN b, c`,
        {rname: rname, trigger: trigger}
      )

      result.records.map(record => {
          console.log(`b: ${record.get('b')}, c: ${record.get('c')}`);
      })
    })
  } finally {
    console.log("finally");
    await session.close();
    await driver.close();
  }
}

doIt();
此代码了解处理的异步性质,在事务完成后使用结果,然后才关闭会话和驱动程序。它还使用writeTransaction写入数据库


您应该研究驱动程序的功能,了解驱动程序的所有使用方法。

如果您正在编写一些API,请尝试使用OGM

坚持

const a = new SomeModel()
await a.save()
告诉我这是否对你有帮助

const a = new SomeModel()
await a.save()