We need a simple way to refresh data in the graph, so - Delete existing data and create new data - and of course we want it to fully succeed or not succeed at all. (we are using nodejs)
Looking at the Transactions Documentation it says:
While it is not possible to run a Cypher query outside a transaction...
From this I understand that as an alternative to running several queries in a transaction like suggested here we can also "Concatenate" queries to 1 query and it will be run as a single query.
So we can connect 2 queries with the WITH keyword (without using the piped result)
So we will end up with something like
MATCH (delItem {id:"..."}) DETACH DELETE delItem
WITH delItem
UNWIND $param AS a MERGE (asset:foo {id: a.id, accountId: a.accountId}) SET asset = a
$param is the name of the data object attached to the query.
So we attached a delete and an unwind clauses with a WITH clause.
Is this a good alternative to transactions? Is there a better way to do it?