Check this for parameters: http://docs.neo4j.org/chunked/milestone/cypher-parameters.html
And this for a simple use-case of the new transactional endpoint using parameters: https://gist.github.com/jexp/8506572 Michael Am 17.02.2014 um 22:39 schrieb Shekar Tippur <[email protected]>: > I construct the cypher query: > > cypherQuery='MERGE (user:Person:User {email: ' + node.props.email + > ') ON CREATE user = ' + node.props + ' SET user.created = timestamp() ON > MATCH SET user.lastSeen = timestamp() RETURN user'; > > > On Monday, 17 February 2014 13:38:17 UTC-8, Shekar Tippur wrote: > Michael, > > My apologies. > > I have a post call as below: > > var request = require('request'); > request.post({ > url: 'http://localhost:3000/addUser', > headers: { > 'Content-Type': 'application/json' > }, > body: JSON.stringify([{ > props:{ > 'name': 'shekar', > 'email': '[email protected]', > 'sex': 'male' > }, > 'payload': [{'friend1': 'loki'}, {'friend2': 'abc'}] > } > ] > ) > }, function(error, response, body){ > console.log(body); > }); > > Can you please explain what you mean by using parameters? > > I construct the json using > > app.post('/addUser', function(req, res, next) { > > if (req.query){ > > ... > > { props: { name: 'shekar', email: '[email protected]', sex: 'male' }, > payload: [ { friend1: 'loki' }, { friend2: 'abc' } ] } > > > > On Thursday, 13 February 2014 03:21:38 UTC-8, Michael Hunger wrote: > #0 use parameters > #1 This is not valid cypher, no quotes around keys. > #2 no null values -> undefined > #3 don't do merge on more properties than the idenfier, set the others via ON > CREATE SET otherwise you won't find duplicates that have other data > #4 don' use "type" fields that's what labels are for > >> MERGE (user:Person:User {email: {props}.email} ) ON CREATE user = {props} >> SET user.created = timestamp() ON MATCH SET user.lastSeen = timestamp() >> RETURN user' > > > use as query parameters: > >> {props: { name: 'shekar', >> email: '[email protected]'}} > > > Just leave off non-defined properties > > -> >> friends: undefined, >> payload: 'null', > > don't use type properties but a label > -> >> , >> type: 'user' > > Am 13.02.2014 um 12:18 schrieb Shekar Tippur <[email protected]>: > >> tried with JSON.stringify >> >> var cypherQuery='MERGE (user:Person ' + node + ') ON CREATE SET user.created >> = timestamp() ON MATCH SET user.lastSeen = timestamp() RETURN user'; >> >> >> Cypher query - MERGE (user:Person >> {"name":"shekar","email":"[email protected]","payload":"null","type":"user"}) >> ON CREATE SET user.created = timestamp() ON MATCH SET user.lastSeen = >> timestamp() RETURN user >> >> resulting error: >> errorError: Invalid input '"': expected whitespace, an identifier, '}' or >> UnsignedInteger (line 1, column 21) >> "MERGE (user:Person >> {"name":"shekar","email":"[email protected]","payload":"null","type":"user"}) >> ON CREATE SET user.created = timestamp() ON MATCH SET user.lastSeen = >> timestamp() RETURN user" >> ^ >> >> - Shekar >> >> >> On Thursday, 13 February 2014 03:04:57 UTC-8, Shekar Tippur wrote: >> Michael - >> I have trimmed my node object >> >> { name: 'shekar', >> email: '[email protected]', >> friends: undefined, >> payload: 'null', >> type: 'user' } >> >> I am not sure why the merge statement is being interpreted as an array. >> Here is how I am constructing the merge statement >> >> var cypherQuery='MERGE (user:Person ' + node + ') ON CREATE SET >> user.created = timestamp() ON MATCH SET user.lastSeen = timestamp() RETURN >> user'; >> >> and the resulting cypher is .. >> >> "MERGE (user:Person [object Object]) ON CREATE SET user.created = >> timestamp() ON MATCH SET user.lastSeen = timestamp() RETURN user" >> >> - Shekar >> >> On Thursday, 13 February 2014 00:58:48 UTC-8, Michael Hunger wrote: >> At least you cannot do maps or nested collections as properties. >> You would have to model them differently (e.g. individual properties or a >> linked node or serialized) >> >> Michael >> >> Am 12.02.2014 um 20:02 schrieb Shekar Tippur <[email protected]>: >> >>> Michael - >>> >>> I have taken it directly from https://www.npmjs.org/package/node-neo4j >>> >>> without converting to a string, I get the below error >>> >>> Error: Response body is empty >>> >>> There is nothing on neo4j log. >>> >>> - Shekar >>> >>> On Wednesday, 12 February 2014 10:00:56 UTC-8, Michael Hunger wrote: >>> Where did you get that example from? >>> Why do you convert the map into a string? >>> Try Aseems examples first and work from there >>> >>> Michael >>> >>> Sent from mobile device >>> >>> Am 12.02.2014 um 18:44 schrieb Shekar Tippur <[email protected]>: >>> >>>> Hello - >>>> >>>> I am trying to insert a node .. >>>> >>>> {"name":"shekar","email":"[email protected]","payload":[{"friend":"blah"},{"friend":"abc"}],"type":"user"} >>>> >>>> I am using node-neo4j library. >>>> >>>> Here is the code snippet.. >>>> >>>> var encodedNode=JSON.stringify(node); >>>> console.log("In addNode"); >>>> console.log(encodedNode); >>>> db.insertNode(encodedNode,function(err, addnode){ >>>> if(err) throw cb("error in inserting node " + err,{status:err, >>>> id:null}); >>>> >>>> // Output node properties. >>>> console.log(addnode.data); >>>> >>>> // Output node id. >>>> console.log(addnode.id); >>>> cb(null,{status:"Node added",id:addnode.id}); >>>> }); >>>> >>>> Appreciate any help .. >>>> >>>> I see a exception on the logs >>>> >>>> 09:40:23.905 [qtp476501171-1057] WARN o.e.jetty.servlet.ServletHandler - >>>> /db/data/node >>>> java.lang.ArrayIndexOutOfBoundsException: 1 >>>> at >>>> org.neo4j.server.rest.repr.formats.UrlFormFormat.readMap(UrlFormFormat.java:99) >>>> ~[neo4j-server-2.0.0.jar:2.0.0] >>>> at >>>> org.neo4j.server.rest.web.RestfulGraphDatabase.createNode(RestfulGraphDatabase.java:239) >>>> ~[neo4j-server-2.0.0.jar:2.0.0] >>>> at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source) ~[na:na] >>>> at >>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>> ~[na:1.7.0_45] >>>> at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_45] >>>> at >>>> com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:132) >>>> ~[neo4j-server-2.0.0.jar:2.0.0] >>>> at >>>> com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at >>>> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) >>>> ~[jersey-server-1.9.jar:1.9] >>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) >>>> ~[javax.servlet-3.0.0.v201112011016.jar:na] >>>> at >>>> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:698) >>>> ~[jetty-servlet-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1506) >>>> ~[jetty-servlet-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112) >>>> ~[neo4j-server-2.0.0.jar:2.0.0] >>>> at >>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1477) >>>> ~[jetty-servlet-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:503) >>>> [jetty-servlet-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:211) >>>> [jetty-server-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1096) >>>> [jetty-server-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:432) >>>> [jetty-servlet-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:175) >>>> [jetty-server-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1030) >>>> [jetty-server-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136) >>>> [jetty-server-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) >>>> [jetty-server-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) >>>> [jetty-server-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at org.eclipse.jetty.server.Server.handle(Server.java:445) >>>> [jetty-server-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:268) >>>> [jetty-server-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:229) >>>> [jetty-server-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.io.AbstractConnection$ReadCallback.run(AbstractConnection.java:358) >>>> [jetty-io-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601) >>>> [jetty-util-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at >>>> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:532) >>>> [jetty-util-9.0.5.v20130815.jar:9.0.5.v20130815] >>>> at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45] >>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google Groups >>>> "Neo4j" group. >>>> To unsubscribe from this group and stop receiving emails from it, send an >>>> email to [email protected]. >>>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Neo4j" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to [email protected]. >>> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Neo4j" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/groups/opt_out. > > > -- > You received this message because you are subscribed to the Google Groups > "Neo4j" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
