2017-01-10 14 views
0

私はNeo4jClientからTimeTreeを呼び出すために以下のコードを使用しています。Neo4jClientを使用してTimeTreeを呼び出す

他のシンプルコールは機能しますが、これは何もしません。エラーはなく、新しい時間オブジェクトもありません。

public class Trip 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
} 

public class UUID 
{ 
    public long Value { get; set; } 
} 

public class TimeStamp 
{ 
    //public long Id { get; set; } 
    //public string Name { get; set; } 

    public long time { get; set; } 
} 


public class User 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public int Age { get; set; } 
    public string Email { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 

     var client = new Neo4jClient.GraphClient(new Uri("http://localhost:7474/db/data"), "neo4j", "password"); 
     client.Connect(); 


     client.Cypher 
      .Match("(n)") 
      .DetachDelete("n") 
      .ExecuteWithoutResults(); 


     var newUser = new User { Id = 456, Name = "Jim" }; 
     client.Cypher 
      .Create("(user:User {newUser})") 
      .WithParam("newUser", newUser) 
      .ExecuteWithoutResults(); 

     var newTrip = new Trip { Id = 001, Name = "Antibes" }; 
     client.Cypher 
      .Match("(traveller:User)") 
      .Where((User traveller) => traveller.Id == 456) 
      .Create("(traveller)-[:TRAVELLING]->(travelling:Trip {newTrip})") 
      .WithParam("newTrip", newTrip) 
      .ExecuteWithoutResults(); 

     var tstamp = client.Cypher 
       .Match("(trip:Trip)") 
       .Where((Trip trip) => trip.Name == "Antibes") 
       .With("trip AS tripToLink") 
       .Call("ga.timetree.events.attach({ node: 'tripToLink', time: 1483828451000, relationshipType: \"ARRIVING_ON\"})") 
       .Yield("node") 
       .Return(node => new { TimeStamp = node.As<TimeStamp>() }); 

以下のシェルで作業を行います。

MATCH (trip:Trip) 
WHERE trip.Name = "Antibes" 
WITH trip 
CALL ga.timetree.events.attach({node: trip, time: 1483828451000 , relationshipType: "ARRIVING_ON"}) 
YIELD node RETURN node 
+0

'TimeStamp'の定義は何ですか? - **これを無視**完全にmiscopied :) –

答えて

1

まず第一に - そこにすべてのコードを置くことで良い仕事、それは人生がずっと楽作られました!

tstamp変数はICypherFluentQuery<???>です(作成している匿名タイプを表すには '?'を使用しています) - 結果を実際に取得する必要があります応答を得る。 .Resultsに電話するまでは、実際にはクエリを実行しません。あなたがいる場合

BadInputException: java.lang.String cannot be cast to org.neo4j.graphdb.Node

:あなたがこれを行うと、おそらくエラーが発生します

var tstamp = client.Cypher.... 
    /* rest of the query here */ 

var tStampResults = tstamp.Results; 

は一般的に、私は後に、あなたが持っているように、クエリを作成し、実行したいですコンソールで実行したクエリからの応答を確認します。実際に戻ってくることを実際に確認します:

╒═══════════════════════════╕ 
│"node"      │ 
╞═══════════════════════════╡ 
│{"Id":"1","Name":"Antibes"}│ 
└───────────────────────────┘ 

とあなただけTrip型にキャストすることができますので、あなたは、nodeYIELD INGのしているためです。

var query = client.Cypher 
    .Match("(trip:Trip)") 
    .Where((Trip trip) => trip.Name == "Antibes") 
    .With("trip") 
    .Call("ga.timetree.events.attach({node: trip, time: 1483828451000 , relationshipType: \"ARRIVING_ON\"})") 
    .Yield("node") 
    .Return(node => node.As<Trip>()); //<-- Change here 
+0

ありがとう@Chris Skardon。補足として、自動的なイベントの添付ファイルを使用することをお勧めします。これにより、手動によるプロセスが消えることになります。https://github.com/graphaware/neo4j-timetree#automatic-event-attachment –

+0

ありがとうございます。 "{" BadInputException:java.lang.Stringをorg.neo4j.graphdb.Nodeにキャストできません "}" var tStampResults = tstamp.Results; "のエラーline – Opononi

+0

私がそこに置いたコードをコピーして実行しましたか?私はコードコピーを実行している/貼り付け、それは完全に動作している、あなたの質問に変更されたコードを追加できますか? –

関連する問題