Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
11-01-2019 07:30 AM
I have the following code which extracts the data from my table in the sql database which matches with id:
Now I want to write this query into the neo4j cypher language in which nodes are created with the label voters, and properties of that node contain the id.
So whichever node id matches then that node data(all the properties information) should be fetched.
router.get('/details',(req,res)=>{
let sess = req.session;
let id = sess.voterid;
connection.query(`SELECT * FROM register WHERE voterid= '${id}'`,(err,res1)=>{
if(err){
console.log(err);
}else{
res.send(res1);
}
})
})
11-01-2019 09:33 AM
the equivalent Cypher statement would be similar to
Match (n:Voters) where n.voterid=${id} return n;
Note Cypher objects are case sensitive. So unlike most RDBMS where the following 2 statements are equivalent
select * from register .....
and
select * from REGISTER .....
this is not the case with Cypher. A
Match (n:Voters) .....
is looking for all nodes with a label exactly ':Voters'
11-01-2019 09:39 AM
Can you please give some suggestion for the following query as well:
My SQL code is:
let userData = req.body;
connection.query(`INSERT INTO register (name,fname,voterid,gender,address,pincode,city,state,pic,dob,password) VALUES ('${userData.name}','${userData.fatherName}','${userData.voterId}','${userData.gender}','${userData.address}','${userData.pincode}','${userData.city}','${userData.state}','${file.originalname}','${userData.dob}','${md5(userData.password)}')`,(err,res0)=>{
if(err){
console.log(err);
res.send({
swal : {
type : "error",
text : "registration failed"
}
})
}else{
res.send({
swal : {
type : "success",
text : "registration successful"
}
})
}
Now the code which I written in neo4j is:
let fatherName = req.body.fatherName;
let id = req.body.voterId;
let name = req.body.name;
let address = req.body.address;
let city = req.body.city;
let state = req.body.state;
let dob = req.body.dob;
let gender = req.body.gender;
let pincode = req.body.pincode;
let password = md5(req.body.password);
let pic = file.originalname;
session.run(` CREATE (n:voters { id:{idParam}, name:{nameParam}, fname:{fnameParam}, gender:{genderParam}, address:{addressParam}, pincode:{pincodeParam}, city:{cityParam}, state:{stateParam}, pic:{picParam}, dob:{dobParam},password:{passwordParam}}) RETURN n.id`,{idParam:id, nameParam: name, fnameParam: fatherName, genderParam: gender, addressParam:address, pincodeParam:pincode, cityParam: city, stateParam:state, picParam:pic, dobParam: dob, passwordParam:password})
.then(function(result){
res.send({
swal : {
type : "error",
text : "registration failed"
}
})
})
.catch(function(err){
console.log(err)
});
But it is giving me the following error:
{ Neo4jError: Unable to pack the given value: function driver(url, authToken) {
var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
(0, _util.assertString)(url, 'Bolt URL');
var parsedUrl = _urlUtil["default"].parseDatabaseUrl(url);
if (['bolt+routing', 'neo4j'].indexOf(parsedUrl.scheme) !== -1) {
return new _routingDriver["default"](_serverAddress["default"].fromUrl(parsedUrl.hostAndPort), parsedUrl.query, USER_AGENT, authToken, config);
} else if (parsedUrl.scheme === 'bolt') {
if (!(0, _util.isEmptyObjectOrNull)(parsedUrl.query)) {
throw new Error("Parameters are not supported with scheme 'bolt'. Given URL: '".concat(url, "'"));
}
return new _driver.Driver(_serverAddress["default"].fromUrl(parsedUrl.hostAndPort), USER_AGENT, authToken, config);
} else if (parsedUrl.scheme === 'http' || parsedUrl.scheme === 'https') {
return new _httpDriver["default"](parsedUrl, USER_AGENT, authToken, config);
} else {
throw new Error("Unknown scheme: ".concat(parsedUrl.scheme));
}
}
at captureStacktrace (C:\Users\NISHU\Angular\voters - Copy\backend\node_modules\neo4j-driver\lib\v1\result.js:199:15)
at new Result (C:\Users\NISHU\Angular\voters - Copy\backend\node_modules\neo4j-driver\lib\v1\result.js:65:19)
at Session._run (C:\Users\NISHU\Angular\voters - Copy\backend\node_modules\neo4j-driver\lib\v1\session.js:152:14)
at Session.run (C:\Users\NISHU\Angular\voters - Copy\backend\node_modules\neo4j-driver\lib\v1\session.js:130:19)
at router.post (C:\Users\NISHU\Angular\voters - Copy\backend\services.js:52:17)
at Layer.handle [as handle_request] (C:\Users\NISHU\Angular\voters - Copy\backend\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\NISHU\Angular\voters - Copy\backend\node_modules\express\lib\router\route.js:137:13)
at Immediate._onImmediate (C:\Users\NISHU\Angular\voters - Copy\backend\node_modules\multer\lib\make-middleware.js:53:37)
at runCallback (timers.js:706:11)
at tryOnImmediate (timers.js:676:5) code: 'ProtocolError', name: 'Neo4jError' }
So Please Help!!!
All the sessions of the conference are now available online