Javascript 节点写入流挂起
此节点脚本挂起在最后一行之后,其中写入了Javascript 节点写入流挂起,javascript,node.js,neo4j,stream,Javascript,Node.js,Neo4j,Stream,此节点脚本挂起在最后一行之后,其中写入了记录:442 这意味着finish事件已触发,但我不知道如何结束整个脚本 const N3 = require('n3'); const fs = require('fs'); const neo4j = require('neo4j-driver').v1; const uri = 'bolt://localhost'; const user = 'neo4j'; const password = 'sms1993662'; const driver
记录:442
这意味着finish
事件已触发,但我不知道如何结束整个脚本
const N3 = require('n3');
const fs = require('fs');
const neo4j = require('neo4j-driver').v1;
const uri = 'bolt://localhost';
const user = 'neo4j';
const password = 'sms1993662';
const driver = neo4j.driver(uri, neo4j.auth.basic(user, password));
const session = driver.session();
let streamParser = N3.StreamParser();
let rdfStream = fs.createReadStream('/Users/simonshapiro/Documents/javascript/rdf_graphlib_js/data/sh.tll')
let number_of_rows = 0;
function DatastoreWriter () {
let writer = new require('stream').Writable({objectMode: true});
writer._write = (triple, encoding, done) => {
console.log(triple);
const mergePromise = session.run(
`MERGE (n:Unidentified {id:"${triple.subject}"})`
);
mergePromise.then(() => {
number_of_rows += 1;
done();
})
.catch((e)=>{
console.log('error', e);
done();
});
}
return writer
};
const neo4jWriter = new DatastoreWriter();
rdfStream.pipe(streamParser);
streamParser.pipe(neo4jWriter);
neo4jWriter.on('finish', ()=>{
session.close();
console.log('records written: ', number_of_rows);
});
根据,应关闭驱动程序,操作如下:
neo4jWriter.on('finish', ()=>{
session.close(() => driver.close());
console.log('records written: ', number_of_rows);
});
进程。退出(0)
。但实际上,您应该找到仍然可用的数据(可能是驱动程序连接),并更优雅地关闭该数据